• InnoDB Buffer Pool и его стабильность

    vsespb
    @vsespb
    Buffer pool и для данных и для индексов. Большие данные выкинут индексы (поэтому я и спросил про файлы в БД).

    Тем не менее для быстрой работы запросов в памяти нужны только индексы (в противном случае база будет всегда тормозить, если не влезет в память), по крайней мере у меня 30гб база нормально работает, запросы ок, хотя памяти у меня меньше 30 гб.

    > Делал вычитку только индексов сразу после перезагрузки сервера.
    как это делается?

    > Любой следующий запрос, использующий не только покрывающие индексы
    что такое покрывающие индексы?

    Индекс может выкинуть из памяти какой-нибудь запрос, который читает все данные (работая без индекса), если, конечно, памяти мало.
  • InnoDB Buffer Pool и его стабильность

    vsespb
    @vsespb
    AxisPod, что за специфика, первый раз слышу, можно пруф? Известно что MyISAM «быстрее на простых выборках», но какое это имеет отношение к топику?
  • Портится кодировка скачанных perl-скриптом данных при добавлении в базу?

    vsespb
    @vsespb
    Попробовал с URL, который возвращает text/csv в 1251, без charset header'ов.

    use POSIX qw(strftime);
    use LWP::UserAgent;
    use HTTP::Headers;
    use HTTP::Cookies;
    use Digest::MD5 qw(md5_hex);
    use common::sense;
    no utf8;
    no strict;
    
    my $URL = '...'; # mime text/csv, no encoding
    
    $ua = new LWP::UserAgent;
    $hh = HTTP::Headers->new(
      User-Agent => 'Mozilla/5.0 (Windows NT 5.1; rv:21.0) Gecko/20100101 Firefox/21.0',
      Accept => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
      Accept-Language => 'en-us,en;q=0.7,ru;q=0.3',
      Accept-Encoding => 'gzip, deflate',
      Connection => 'keep-alive',
    );
    $ua->default_headers( $hh );
    $ua->cookie_jar({});
    $ua->timeout(20);
    
    $res = $ua->get($URL);
    $s = $res->decoded_content();
    use Devel::Peek;
    
    print LWP->VERSION, "\n";
    Dump $s;
    print $s;
    
    open my $f, ">", "test.tmp";
    print $f $s;
    close $f;
    
    open $f, "<", "test.tmp";
    my $s2 = join('', <$f>);
    close $f;
    
    Dump $s2;
    print $s2;
    
    


    С lwp 5.x это будут бинарные данные в кодировке 1251

    SV = PV(0x14d0b50) at 0x127e580
      REFCNT = 1
      FLAGS = (POK,pPOK)
      PV = 0x15043b0 "\362\345\361\362, \363\360\340, 3\n\362\345\361\3622, \363\360\340, 4\n"\0
      CUR = 27
      LEN = 32
    SV = PV(0x1728660) at 0x127e778
      REFCNT = 1
      FLAGS = (PADMY,POK,pPOK)
      PV = 0x178ff60 "\362\345\361\362, \363\360\340, 3\n\362\345\361\3622, \363\360\340, 4\n"\0
      CUR = 27
      LEN = 32
    5.835
    тест, ура, 3
    тест2, ура, 4
    тест, ура, 3
    тест2, ура, 4
    


    с LWP 6 это будут строковые данные,

    SV = PV(0x1905370) at 0x1803ed0
      REFCNT = 1
      FLAGS = (POK,pPOK,UTF8)
      PV = 0x1cf4480 "\303\262\303\245\303\261\303\262, \303\263\303\260\303\240, 3\n\303\262\303\245\303\261\303\2622, \303\263\303\260\303\240, 4\n"\0 [UTF8 "\x{f2}\x{e5}\x{f1}\x{f2}, \x{f3}\x{f0}\x{e0}, 3\n\x{f2}\x{e5}\x{f1}\x{f2}2, \x{f3}\x{f0}\x{e0}, 4\n"]
      CUR = 41
      LEN = 48
    SV = PV(0x1cd2520) at 0x1804110
      REFCNT = 1
      FLAGS = (PADMY,POK,pPOK)
      PV = 0x1cb4890 "\362\345\361\362, \363\360\340, 3\n\362\345\361\3622, \363\360\340, 4\n"\0
      CUR = 27
      LEN = 32
    6.03
    тест, ура, 3
    тест2, ура, 4
    тест, ура, 3
    тест2, ура, 4
    


    При этом LWP думает, что текст был в Latin1 (вот код, почему оно так думает metacpan.org/source/GAAS/HTTP-Message-6.06/lib/HTTP/Message.pm#L359 ). Так что строковые денные неправильные (а именно Cp1251, перекодированное из Latin1 в Utf-8). Тем не менее Latin1 имеет особый статус в perl. В бинарном контексте, (т.е. если, например, вывести в файл без указания кодировки), они ведут себя как оригинальные данные (из соображений совместимости). Подробнее я тут писал habrahabr.ru/post/190584/

    Поэтому запись и чтение из файла (бинарного!) возвращает их в оригинальный вид.

    По идее, они вообще должны вести себя как оригинальные данные всегда. Но, в некоторых местах это точно не происходит. Одно из таких мест — DBI (возможно это даже можно считать багом, ведь кодировку в DBI не указали, значит оно должно воспринимать их как бинарные, хотя наверняка из соображений совместимости это не считается багом).

    Пофиксить всё можно, использовав content, вместо decoded_content, а лучше decoded_content(charset=>'none');.
    Использовать decoded_content(charset=>'windows-1251'); не получится, для этого нужно будет исправлять весь скрипт.
  • Портится кодировка скачанных perl-скриптом данных при добавлении в базу?

    vsespb
    @vsespb
    Нет, у страницы в заголовках charset нет, я проверил.

    Значит в meta-тэгах есть? Как раз в LWP 6.x виднеется новый код по парсингу meta-тэгов при определении кодировки.

    Файл просто открываю: open TST, '>', 'test';

    Хм, да, если в этот файл записать unicode строку, в которой есть non-Latin1 символы, потом их прочитать так же, то это будет уже строка байтов. (при этом выдастся warning, если use warnings есть)

    Соответственно, если теория верна (а пока всё совпадает), то Вам нужно использовать content а не decoded_content (а лучше decoded_content с параметром charset => 'none', тогда, если вдруг у страницы будет gzip, то он декодируется). Верна ли теория или нет, нельзя сказать наверняка, не увидев весь код.
  • 8-bit контрольная сумма или хеш-функция

    vsespb
    @vsespb
    Она используется в криптографии. Например в браузере можно посмотреть md5 fingerprint какого-нибудь SSL сертификата. Это криптографическая хэш-функция и она не на столько слаба и не на столько уязвима, чтобы вызвать проблемы для применения ТС.

    Если для нужд ТС она слишком медлена, может использовать её для сравнения с другими функциями и их случайности.
  • 8-bit контрольная сумма или хеш-функция

    vsespb
    @vsespb
    Интересно, если у какой-либо функции «случайность» лучше, чем у криптографической, чем это объясняется?
    Имхо, если у криптографической функции найдена «неслучайность» где-либо, это уже уязвимость.
  • Потеря пакетов при передаче больших файлов через TCP?

    vsespb
    @vsespb Автор вопроса
    Ну ок, но раз
    typically degrades
    значит не с исчезающе малой вероятность, а обычно (т.е. часто), следовательно всё равно хочется увидеть описание проблемы…
  • Потеря пакетов при передаче больших файлов через TCP?

    vsespb
    @vsespb Автор вопроса
    Исправил заголовок вопроса. Конечно потеря пакетов существует, всегда. Интересует как она сказывается на передачи больших файлов.
    transfer bandwidth typically degrades over time due to this

    т.е. они хотят сказать что если передавать огромный файл, в итоге скорость будет уменьшаться и уменьшаться.

    я такого не замечал. я могу скачать файл в несколько гигов с какого-нибудь сервера без проблем, без докачки. конкретно с амазона (вернее с Glacier) могут быть проблемы со скачиванием файлов начиная с 2 гигабайт (в их же сети, т.е. с EC2 инстанса), если погода на марсе хорошая, то 20 гигабайт. поэтому хочу понять проблему на которую они ссылаются, и понять как и когда уменьшается скорость.
  • Не приходят sms-ки — телефон или оператор?

    vsespb
    @vsespb Автор вопроса
    Сделал. По вышей теории это каждый раз нужно делать, когда ждёшь смску? Или один раз и навсегда? Разве перезагрузка телефона не является аналогом такого действия?
  • Не приходят sms-ки — телефон или оператор?

    vsespb
    @vsespb Автор вопроса
    Автоматический поиск сети включён.
  • Не приходят sms-ки — телефон или оператор?

    vsespb
    @vsespb Автор вопроса
    Ну да, логично, ведь оператор не может «знать» что я включил wifi и доставить смски.
    Но нет, под выходом в инет я имел ввиду через оператора.
  • Merge the remote changes before pushing again, хотя remote changes не было

    vsespb
    @vsespb Автор вопроса
    8ca5b5d HEAD@{7}: commit:Journal - tests - zero files - improve
    dca4932 HEAD@{8}: commit:Journal - tests - check also that filtered files behave consistent
    0cef1aa HEAD@{9}: commit:Journal - test added to ensure zero-size files are properly handled
    2b694e8 HEAD@{10}: pull : Merge made by recursive.
    93912b7 HEAD@{11}: commit:Journal - improve tests
    6815148 HEAD@{12}: commit:Journal - additional test for missing files
    d9b787e HEAD@{13}: commit:README - sync command draft
    6317d42 HEAD@{14}: commit:Tests simplify and fix for 5.8.x capture_stdout/stderr
    de50b8d HEAD@{15}: commit:CheckLocalHash - test that we use latest()
    9c3c1c2 HEAD@{16}: commit:CheckLocalHash - test that it works with multiple files
    8f6d353 HEAD@{17}: commit:CheckLocalHash - test dry-run
    
    
  • Merge the remote changes before pushing again, хотя remote changes не было

    vsespb
    @vsespb Автор вопроса
    Если результат мёржа однозначно выводится из веток-участников, то коммит мёржа содержит только ссылки на смёрженные ветки и сообщение


    Нет. Коммит мерджа всегда содержит итоговые изменения в бранче, даже если конфликтов не было.

    По вашему графу создаётся впечатление, что после первого пуша вы откатили (или изменили)

    Нет, ничего такого не было, --amend не было. Ок будем просто считать что что-то сглючило…
    Спасибо!
  • Merge the remote changes before pushing again, хотя remote changes не было

    vsespb
    @vsespb Автор вопроса
    Возможно изменилась локальная копия development?

    да, это бы всё объяснило. но как изменилась? команды типа rebase, reset, gc итд не запускал.
    вообще запускал только add, commit, push

    merge commit и не будет содержать никаких изменений если слияние прошло без конфликтов.

    хм, вообще имхо, если в результате слияния никаких изменений вообще не произошло.

    Посмотрите по git log --graph что вы на самом деле смёржили.

    свои же коммиты, только вот не понятно как такое может быть в данной ситуации

    * commit 0cef1aa7ab92d9cd92690c8ed70c2cc5656247bf
    | Author: Victor
    | Date:   Tue Jul 9 00:20:45 2013 +0400
    | 
    |     message1
    |    
    *   commit 2b694e85cb0cd3aea277f411fd93485685dab6e2
    |\  Merge: 93912b7 d9b787e
    | | Author: Victor
    | | Date:   Mon Jul 8 23:24:00 2013 +0400
    | | 
    | |     Merge branch 'development' of https://github.com/my/repo into development
    | |   
    | * commit d9b787e39187011a8101c63b67ddf4e49b3aa48e
    | | Author: Victor
    | | Date:   Mon Jul 8 22:32:31 2013 +0400
    | | 
    | |     message2
    | |   
    * | commit 93912b73f6083503c2e1216bcaa223377ead10e4
    | | Author: Victor
    | | Date:   Mon Jul 8 23:23:30 2013 +0400
    | | 
    | |     message3
    | |   
    * | commit 68151484480c1e41a068c27985c31c6b4e016b22
    |/  Author: Victor
    |   Date:   Mon Jul 8 23:15:28 2013 +0400
    |   
    |       message4
    |  
    
  • Подскажите иностранные аналоги Фрилансим

    vsespb
    @vsespb
    Расскажу моё видение.

    Я как раз с vWorker'а

    Когда его поглотили, нужно было решать куда звать моих старых клиентов с vworker — на freelance.com или на odesk.
    (о боже мой, надеюсь меня не забанять на freelance, ведь с какой-то точки зрения я не имею права не позвать людей с vworker на freelance,
    так как их туда и так «переместили», а переманивать их нельзя, хотя с другой точки зрения, перемещать их, вмести с их приватными данными не имели права, ну да ладно)

    Встал простой вопрос, вот должен мне клиент $1000. Что ему написать? Сколько он должен заплатить и сколько мне достанется?
    Оказалось что высчитать это не так то просто. Freelance имеет комиссию ниже odesk, раза в два, но это только если купить их тарифные планы.
    Чтобы воспользоваться этой экономией нужно обоим платить месячные платежи, и, очевдно, нужно вычесть расходы клиента из моих денег. (выставление инвойса не совпадает месячными платежами, в этом сложность)

    Пытаясь дальше вычислить на какую же сумму будет инвойс, посчитал все комиссии, к тому времени уже назрела мысль что лучше комиссия в два раза больше чем нагружать
    заказчика хитрыми расчётамию…

    Внезапно натыкаюсь на скрытую комиссию для заказчика, описания её вроде нигде нет, толкько при самой попытке положить деньги на счёт она видна (deposit fee).

    Пишу в саппорт, перечисляю все комиссии кроме неё, спрашиваю — это всё что заказчик должен заплатить?
    Отвечают — да. Пишу ещё раз — а как же deposit? Как ни в чём не бывало отвечают «А, да, его тоже».
    Итого саппорт — отстой, скрытые коммисси уж сильно скрытые.

    Ладно, пытаюсь верифицировать карточку. Плачу, холдятся деньги ($10 или $1 не помню), в браузере белый экран. Пустота.
    Повторяю ещё раз. Опять белый экран (ещё +$10).
    Пишу в саппорт — говорят стереть всё в браузере и попробовать завтра.
    Итого — софт глючит на столько, что баги уже и не пытаются расследовать, либо их вообще никак нельзя расследовать, даже такой вещи как следы транзакции.

    Плюю на всё это, перехожу на odesk.

    Потом начинает приходить спам от freelancer. Под видом созданных тикетов (а может это действительно тикеты), типа «клиен вася, попросил нас порекомендовать кого-либо
    для его проекта, мы порекомендовали вас». Игнорирую. Отписываюсь в админке. Отвечаю на каждый спам email с просьбой меня отписать.

    Потом начинают звонить по телефону (с ужасным качеством связи), на вежливый ответ что «I don't bid for projects now» — отвечают «Почему?» и очень настойчиво.
    После слов «because your site sucks» вешают трубки.

    После этого спам и звонки повторяются, на каждый звонок я проговариваю «plese don't call me». На каждый спам пишу чтобы меня отписали.
    На что они каждый раз очень вежливо заверяют что не будет мне больше писать. И сново пишут.

    Итого — такой бардак что не могут сделать простую вещь — отписать человека от рассылки.

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

    Типа «мы забьём на 10% клиентов, пусть идут лесом». Имхо все так делают, но они как раз хотят забить на довольно большой процент клиентов, и эта стратегия и означает баги, плохой саппорт, обман, низкую надёжности,
    бюрократию, и любая нестандартная проблема не будет решена, ведь она всего у 10% клиентов. Только вот практически каждый из оставшихся 90% будет натыкаться на несколько таких проблем.

    Ещё помню как владелец гордился что «у них целых 120 человек в саппорте». Лучше бы наняли 6 вменяемых.

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