LINUX.ORG.RU

Сообщения tyler19

 

Самая отстойная документация с которой вам приходилось работать

Какая самая отстойная документация с которой вам приходилось работать? К библиотеке, API, или что там ещё...

Сейчас пытаюсь разобраться с facebook graph api, очень недоволен их документацией. Информация представлена в виде не упорядоченных коротеньких статеек описывающих только основы, многое недокументировано либо я хз как искать. Документация отрывочная и неполная. Ненавижу грёбаный фейсьбюк!

Одна из лучших документаций которую видел - документация по PHP: http://us2.php.net/manual/en/. Всё легко находится, информация полная, её не приходится собирать по мелким обрывкам как в случае с грёбаным фейсьбюкам.

tyler19
()

Mono для проприетарного кросс платформенного приложения

Является ли Mono адекватным выбором для разработки проприетарного кросс платформенного приложения? Насколько сложно декомпилировать бинарный код? Учитывая что насколько я понял используется Run Time поддержка для скомпилированного приложения? Настолько же сложно как native код скомпилированный, например, компилятором C++ или это что то типа Python bytecode?

tyler19
()

Странное поведение PHP

#!/usr/bin/env php
<?php

$items = array();
for ($i = 0; $i < 5; $i++) {
	$items[] = array(
		'id' => $i,
	);
}

foreach ($items as &$item) {}

print_r($items);

foreach ($items as $item) {
	echo "PROCESSING => {$item['id']}\n";
}
$ ./test.php 
Array
(
    [0] => Array
        (
            [id] => 0
        )

    [1] => Array
        (
            [id] => 1
        )

    [2] => Array
        (
            [id] => 2
        )

    [3] => Array
        (
            [id] => 3
        )

    [4] => Array
        (
            [id] => 4
        )

)
PROCESSING => 0
PROCESSING => 1
PROCESSING => 2
PROCESSING => 3
PROCESSING => 3

Что происходит в последней итерации последнего foreach?

tyler19
()

`cout.operator<<()` vs `cout << `

#include <iostream>
using namespace std;

int main(int argc, char **argv) {
        cout << "Hello, world\n";
        cout.operator<<("Hello, world\n");
        return 0;
}
$ ./a.out
Hello, world
0x40090c

Почему cout.operator<< производит отличный от `cout << ` результат (похоже что pointer)? Разве это не один и тот же вызов?

tyler19
()

MySQL vs. PostgreSQL holy war

Часто возникают споры какая из DBMS лучше. Однако обе они работают достаточно быстро с малыми объёмами данных. Тестирование с большими объёмами данных затруднительно т.к. приходится искусственно создавать данные.

Предлагаю сторонникам одной из этим DBMS посоветовать оптимизации которые только можно применить к этой таблице. Таким образом вы мне очень поможете и будет видно какая DBMS всё таки лучше для больших объёмов данных.

Выслушаю также предложения по другим DBMS в том числе NoSQL.

Имеется таблица

в MySQL:

CREATE TABLE `videos` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `site` varchar(255) NOT NULL,
  `site_id` bigint(20) unsigned NOT NULL,
  `site_url` varchar(255) NOT NULL,
  `title` text NOT NULL,
  `thumbnails` text NOT NULL,
  `duration_txt` varchar(32) NOT NULL,
  `duration` bigint(20) unsigned NOT NULL,
  `embed` text NOT NULL,
  `created_on` datetime NOT NULL,
  `status` enum('active','deleted') NOT NULL DEFAULT 'active',
  `views` bigint(20) unsigned NOT NULL DEFAULT '0',
  `rating` bigint(20) unsigned NOT NULL DEFAULT '0',
  `voted` bigint(20) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `site` (`site`),
  KEY `site_id` (`site_id`),
  KEY `site_url` (`site_url`),
  KEY `status` (`status`),
  KEY `created_on_id` (`created_on`,`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1797645 DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED

в PostgreSQL:

                                      Table "public.videos"
    Column    |            Type             |                      Modifiers                      
--------------+-----------------------------+-----------------------------------------------------
 id           | bigint                      | not null default nextval('videos_id_seq'::regclass)
 site         | character varying           | not null
 site_id      | bigint                      | not null
 site_url     | character varying           | not null
 title        | character varying           | not null
 thumbnails   | character varying           | not null
 duration_txt | character varying           | not null
 duration     | bigint                      | not null
 embed        | character varying           | not null
 created_on   | timestamp without time zone | not null
 views        | bigint                      | not null
 rating       | bigint                      | not null
 voted        | bigint                      | not null
 status       | status                      | not null default 'active'::status
Indexes:
    "videos_pkey" PRIMARY KEY, btree (id)
    "videos_created_on" btree (created_on)
    "videos_created_on_id" btree (created_on DESC, id DESC)

Задача как можно лучше оптимизировать запрос «SELECT * FROM videos WHERE status = 'active' ORDER BY created_on DESC, id DESC OFFSET 1050050 LIMIT 30». (OFFSET должен быть большим, таблица содержит 1,782,614 записей. Если это сильно увеличит производительность WHERE status = 'active' можно выкинуть и сделать хотя бы без него.

tyler19
()

Оптимизация таблицы содержащей около 2 миллионов записей

Имеется таблица содержащая около 2 миллионов записей. Выборка из начала (LIMIT 0, 30) происходит довольно быстро, однако чем больше OFFSET тем медленнее выборка. Выборка LIMIT 1782420, 30 не завершилась даже за 5 минут. Даже несколько минут это не дело т.к. может быть большое количество пользователей работающих с веб приложением одновременно и запрашивающих страницы с большими номерами. Никакие индексы не помогают (снижают время доступа к первым страницам но не к последним). Fixed (ROW_FORMAT) не помог. Как это можно оптимизировать? Неужели современная вычислительная техника не способна на создание приложения просто показывающего пользователям такой объём информации?

tyler19
()

Импорт из MySQL в PostgreSQL

Crawler насобирал 1,647,385 записей в таблицу. Заметил MySQL начала тормозить. Хочу попробовать те же данные с PostgreSQL. Как импортировать? Не всё оказалось так просто как казалось. Дамп от mysqldump не подходит, пробовал с опциями --compact --compatibility=postgresql. Нашёл способ

mysql> select * from videos into outfile '/hui/hui';

b32=# \copy videos from '/hui/hui';

Однако возникла ошибка и ничего не поимпортировалось:

b32=# \copy videos from '/hui/hui';
ERROR:  literal carriage return found in data
HINT:  Use "\r" to represent carriage return.
CONTEXT:  COPY videos, line 1367997
b32=# select count(id) from videos;
     0

Что делать? Искать скриптом \r и замещать? Тогда наверное ещё надо учитывать внутри строки или нет. Возможно всплывут какие то другие специальные символы. Есть ли более автоматизированный универсальный способ?

tyler19
()

Почему оно такое (CSS)?

Вот начал изучать CSS layouts. И сразу возникло неприятное ощущение. Ну почему оно такое? Ведь разрабатывалось специально с конкретной целью а в итоге хак на хаке сидит и хаком погоняет. Какие идиоты это делали? Неужели нельзы было продумать такие элементарные вещи как vertical align и full length columns что бы это всё можно было делать без хаков. Это не проблема разных имплементаций а как раз таки проблема самого стандарта.

И ещё один вопрос. Имеет ли реальный смысл переводить табличный layout в CSS? Из аргументов слышал 2: css проще для гугл роботов и удобство внесения изменений. Удобства никакого не вижу, даже наоборот. Так же вызывает сомнение что гугл робот не осилит табличный layout, всё же его писали лучшие программисты учитывая как трудно попасть на работу туда.

tyler19
()

Почему event `mouseenter ` выдаётся при движении внутри элемента?

<html>
<head>
<script type="text/javascript" src="html/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function () {
    $('.test').mouseenter(function () {
        alert('mouseenter!');
    });
});
</script>
</head>
<body>

<img class="test" src="http://cdn1.image.youporn.phncdn.com/201210/23/7991724/160x120/10.jpg" />

</body>
</html>

Судя по документации этот event должен возникать когда мышь входит в элемент. Однако он возникает и при движении мышью внутри элемента без выхода за его границы. Почему? Как детектить только вход элемента (требуется что бы начать слайдшоу из нескольких images)?

tyler19
()

Может ли быть пожар от компа?

В последнее время начал вырубаться комп через некоторое время после начала компиляции большого пакета (emerge в gentoo). Я так понимаю что то перегревается. Комп часто остаётся без присмотра и должен оставаться постоянно включённым. Возиться с ним очень уж не хочется, решил просто ничего не компилировать пока т.к. другие задачи видимо не создают такой нагрузки. Может ли вообще от компа наступить пожар? Т.е. обычно же компы горят по схеме - пошёл дым, специфический запах и всё вырубилось. А могут ли загореться окружающие предметы? Может его в железный тазик поставить? :)

tyler19
()

Удалить мерцающие объекты с веб страниц

Очень бесят мерцающие элементы (флеш и анимация) на веб страницах. Считаю их использование непрофессиональным и сильно отвлекающим от чтения текста. Очень мешает когда читаешь статью а где то сбоку анимация. Есть ли какой то плагин желательно для Chromium т.к. firefox'ом пользоваться стало в последнее время совершенно невозможно из за сильных тормозов. Если нет подскажите как написать. По поводу флеша как отключить понятно, но при этом хотелось бы оставить онлайн фильмы и прочее. Как перехватить рисунок и выявить присутствие в нём анимации с целью последующего блокирования а ещё лучше не блокирования а удаления анимации (показа только одного фрейма)?

Перемещено tazhate из web-development

tyler19
()

В очередной раз об ущербности ПоХаПэ

Имеем 2 файла:

test1.php:

<?php

function t2h($txt) {
    return htmlspecialchars($txt, ENT_QUOTES, 'UTF-8');
}

// Error handling code
function exceptionHandler($e) {
	echo "<p><font color=\"red\"><pre>Error:<br />".t2h(print_r($e, true))."</pre></font></p>";
	exit;
}
set_exception_handler("exceptionHandler");

function exceptionErrorHandler($errno, $errstr, $errfile, $errline) {
	throw new ErrorException($errstr, $errno, 1, $errfile, $errline);
}
set_error_handler("exceptionErrorHandler");

if (!session_id()) session_start();

try {
	$mbox = @ imap_open('{imap.gmail.com:993/imap/ssl}', 'sa43sosafoei9asdf9ds@gmail.comm', '9jfoihoasjdf');
} catch (Exception $e) {
	echo "Exception!";
}

?>

test2.php:

<?php

if (!session_id()) session_start();

?>

OK

Username/Password для imap_open заведомо неправильные - пытаюсь написать скрипт проверяющий их правильность перед добавлением в DB. Начальник денег на переделку похапешной поделки в python не выделил, так что продолжаем секс с ущербным недоязыком.

Для начала загружаем test1.php (for ex.: http://localhost/test1.php). Скрипт вроде бы завершился, правда выдал какие то непонятно откуда взявшиеся сообщения не смотря на try ... catch и !оператор сокрытия ошибок! (типичный пример ущербности) @. Это проблема #1: язык не имеет адекватной структуры где все ошибки выдаются в виде exception'а который можно поймать или хотя бы где ф-ции возвращают значение сигнализирующее об ошибке которое опять же можно обработать - даже библиотеки для низкоуровневых языков такое делают. Какие же ламеры писали грёбаный похапэ что он у них просто печатает об ошибке??? Даже на уроках информатики школьников за это ругают!!!

Но это ещё только цветочки. Сообщение можно убрать разными способами.

Выше я писал что «скрипт вроде бы завершился». Но как выясняется завершился он каким то странным образом, либо завершился не до конца. К такому выводу можно придти если попробовать теперь загрузить test2.php (for ex.: http://localhost/test2.php). Браузер выдаст сообщение «Connecting...» и остановится на этом этапе. Connection'а не будет т.к. PHP лочит файлы сессии и оба файла юзают одну и ту же сессию. И, внимание: первый казалось бы завершившийся скрипт либо не разлочил файл сессии либо не завершился до конца!!! в связи с чем второй файл будет ждать разлочки сессии чего похоже никогда не произойдёт. Теперь единственной возможностью загрузить хоть что то использующее эту сессию является перезапуск apache!!!

Что же делать? Закрывать сессию перед этим участком кода? Это поможет если скрипт завершился но забыл закрыть сессию. А что если скрипт остался в памяти? А похоже так оно и есть в связи с тем что перезапуск apache убивает процесс и разлочивает файл.

Мой вердикт: разработчиков убогой поделки расстрелять!!!

tyler19
()

Python headless browser

Существует ли сабж? Навроде PhantomJS только что бы можно было манипулировать на Python. Начинаю ненавидеть JS. Нужен браузер который делает всё как обычно включая исполнение JS но только работает на машине без X, т.е. ничего не показывает пользователю а манипулируется скриптом, например куда нажать, по какому адресу перейти, какой <button> нажать после заполнения формы, etc. У PhantomJS какой то скудный API, мало возможностей. Это я так понимаю обёртка для webkit, есть ли какой то мануал где описано подробно как работать напрямую с webkit?

tyler19
()

DOM: выявить все элементы при клике на которые что то произойдёт

Возможно ли в DOM выявить все элементы при клике по которым что то произойдёт? Требуется для написания скрипта по сбору всех ссылок спрятанных в onclick events. Пишется с помощью PhantomJS. Желательно даже не просто что то произойдёт а конкретно произойдёт переход на другую страницу.

tyler19
()

Надёжный GUI-less веб браузер

Существует ли сабж? HtmlUnit оказалось тормознутым говном. Просто виснет и вешает весь комп вместе с собой на одном веб сайте. Такое неприемлемо. Требуется поддержка JavaScript для сбора ссылок упрятанных за onclick events. Что использует гугл?

tyler19
()

Целесообразность делать метод PRIVATE - ненужное ограничение?

В HtmlUnit в классе WebClient метод loadWebResponseFromWebConnection сделан private. Метод вызывает сам себя рекурсивно в случае редиректа. Есть ТЗ - сохранить всю последовательность редиректов, т.е. URL1 (HTTP code1 - redirect) -> URL2 (HTTP code2 - redirect) -> URL3 (HTTP code3 - 200 OK). Не нашёл как это можно другим способом без модификации библиотечного файла кроме как override loadWebResponseFromWebConnection что невозможно т.к. он private. Если бы он был protected можно было бы сделать так:

class MyWebClient extends WebClient {
  private List<URL> urls;

  public MyWebClient(List<URL> urls) {
    super();
    this.urls = urls;
  }

  protected WebResponse loadWebResponseFromWebConnection(final WebRequest webRequest, final int allowedRedirects) throws IOException {
    this.urls.add(webRequest.getUrl());
    super.this.loadWebRewsponseFromWebConnection(webRequest, allowedRedirects);
  }
}

Теперь же придётся отключить автоматический редирект и продублировать код по обработке редиректов из loadWebResponseFromWebConnection. Вывод: метод не надо было делать private.

tyler19
()

moz-binding

Кто то знает как это использовать? Перерыл весь гугл, нашёл множество примеров но ни один не работает! Может оно вообще не поддерживается в новых версиях? (Версия: 16.0.2). Вот к примеру:

http://help.dottoro.com/ljxlpaqh.php

Там есть Preview, нажимаю, ничего не происходит. В чём дело, не может же быть что вся их документация описывает что то мифическое.

Вкратце для чего надо:

Пишу add-on который заменяет элементы на странице которые имеют определённый class или id (by CSS selector). Написал нечто на вроде (contentScript):

function process() {
$(selectors).each(function (i, elm) { replace(elm); });
}

process();
setInterval(process, 5000);

В Google Chrome всё отлично, грёбаный firefox начинает дико тормозить на многих страницах. Раньше все ругали IE, сейчас меня больше бесит это неповоротливое чудовище firefox с дико укуренным API!

Adblock Plus делает так: добавляет всем этим селекторам «display: none». Было бы неплохо поступить аналогично если бы был CSS тэг наподобие «replace: iframe_url». Но его нет. По описаниям moz-binding'ом можно исполнить JavaScript из CSS, но это moz-binding создаётся ощущение существует только документации.

tyler19
()

google-chrome extension, get last 10 searches

Кто нибудь знает как реализовать ф-цию наподобие этой для firefox в google-chrome:

function getHistory() {
  var ret = [];
  
  var file = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("ProfD", Components.interfaces.nsIFile);
  file.append('formhistory.sqlite');
  
  if (file.exists()) {
    var storageService = Components.classes["@mozilla.org/storage/service;1"].getService(Components.interfaces.mozIStorageService);
    var db = storageService.openDatabase(file);
    
    var statement = db.createStatement("SELECT * FROM moz_formhistory WHERE fieldname = 'searchbar-history' ORDER BY lastUsed DESC LIMIT 10");
    try {
      while (statement.executeStep()) {
        ret.push(statement.row.value);
      }
    } finally {
      statement.reset();
    }
  }
  
  return ret;
}

Ф-ция читает <profile_dir>/formhistory.sqlite что бы получить последние 10 слов поиска. В chrome документации не нашёл даже как взять путь к каталоку пользователя из JS. Особо бесит когда в гугле в ответ на поиск всплывают дебильные статейки для олегофренов про то какую кнопочку нажать что бы поменять настройки поиска!

tyler19
()

В продолжение темы о парсинге HTML regexp'ами.

Недавно была уже тема где разгорелся спор на тему стоит ли парсить HTML regexp'ами:

preg_match_all выражение (комментарий)

Лично я отписался что зачастую использовать regexp удобнее чем сторонние библиотеки содержащие код сомнительного качества и пожирающие неизвестное количество памяти и также других ресурсов.

В теме можно найти и снобистские высказывания о том что парсить HTML regexp'ами это чуть ли не величайший грех. Вполне возможно, но только в идеальном мире.

В настоящее время пишу скрипт который собирает данные из HTML и сохраняет их в DB. Прислушался к совету снобов из предыдущей темы и решил воспользоваться этим: http://simplehtmldom.sourceforge.net/manual.htm

В итоге через некоторое время после запуска скрипта я получаю сообщение:

zend_mm_heap corrupted

В настоящее время занимаюсь тем что переписываю скрипт с regexp'ами. Потому что это проще чем объяснять заказчику дополнительные параметры конфигурации которые ещё невсегда помогают, потому что я потрачу меньше времени за те же деньги, потому что я практик а не сноб-теоретик, и потому что мне глубоко наплевать на ваш снобизм.

PS. Знаю что PHP унылое говно. Но такого ТЗ.

tyler19
()

Получить адрес swf файла

Пишу что то подобное Adblock Plus для firefox. Без проблем могу взять адрес любой картинки ($(img).src). Испытываю затруднения с тем что бы взять адрес <object> или <embed>. Пробовал object.src, object.data, object.href, всё бесполезно. С исходным кодом Adblock Plus разобраться не смог т.к. очень мудрёно написан а я начинающий в разработке плагинов. То что я хочу точно можно сделать т.к. это реализовано не только в Adblock Plus но и в Tools -> Page Info (Ctrl + I). Возможно надо обращаться к каким то сервисам Cc[«@mozilla.org/file/directory_service;1»] но по ним докумантацию нашёл только отрывочную как ни странно. Подскажите пожалуста.

tyler19
()

RSS подписка на новые темы