• Почему у нуба возникает ошибка «Call to a member function fetch_array() on a non-object» в MySQL?

    valerium
    @valerium
    Изобретая велосипед
    Вы пытаетесь вызвать метод у сущности, которая не является объектом.

    Если коротко, то в строке с ошибкой нужно $mysql-> заменить на $result-> и убрать $result из скобок.

    Если подробнее, то строка
    $result = $mysqli->query("SELECT id FROM users WHERE login='$login'");

    в переменной $result создала объект результирующего набора. У этого объекта есть метод fetch_array(), который при каждом вызове возвращает одну строку из набора. Вы же попытались вызвать этот метод у переменной, которая не объявляется в приведённом участке кода, но явно содержит что-то, не являющееся результирующим набором.
    Ответ написан
  • Как посмотреть подробную информацию о процессе на CentOS?

    valerium
    @valerium
    Изобретая велосипед
    Если на обоих серверах приложение запускается без ошибок, ничего странного не пишет в логи и не грузит систему до полусмерти, но при этом не игровой сервер не виден в клиенте, значит, нужно смотреть на настройки клиента: какие IP/домены он опрашивает, на какие порты стучится, открыты ли эти порты на серверах и т. п.

    А вообще, наиболее подробный отчёт о телодвижениях приложения даёт strace, он отслеживает системные вызовы.
    Ответ написан
  • Как организовать зацикленную смену картинок?

    valerium
    @valerium
    Изобретая велосипед
    Выключатель — объект, его состояние — булевый параметр isOn. True — включён, False — выключен. Так же у объекта есть метод toggle(), который делает тупо:
    this.isOn = ! this.isOn
    а затем вызывает метод, перерисовывающий картинку. Метод рисования картинки элементарен.
    Ответ написан
    5 комментариев
  • Какой выбрать сервер для большого количества данных?

    valerium
    @valerium
    Изобретая велосипед
    Совет любительский, но, что называется, от души.

    1. Покупаете самый дешёвый VPS на приличном хостинге.
    2. Запускаете свой код, прикидываете производительность.
    3. Если производительности не хватает, переходите на тариф повыше, возвращаетесь в п. 2.
    4. Остаётесь на этой виртуалке или находите железный сервер с сопоставимой производительностью.

    Если же времени на тесы нет, можно сразу развернуть свой проект на какой-нибудь облачной системе вроде Google Apps, и пусть Google думает о ресурсах. Он большой, ему виднее.
    Ответ написан
  • Бэд блоки на hdd как убрать??

    valerium
    @valerium
    Изобретая велосипед
    Смотря что Вы имеете ввиду под «бэд блоками». SMART имеет такие показатели, как Relocated Sectors (перемещённые секторы) и Relocation Candidate (кандидаты к перемещению).

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

    Со вторыми ещё есть шанс. Кандидаты к перемещению — это такие сектора, чтение из которых произошло однажды с ошибкой (у каждого сектора есть на этот случай CRC32). Чтобы проверить, окончательно ли накрылся сектор, контроллер жёсткого диска пытается записать туда данные. Этого можно ждать, пока само сложится, а можно форсировать утилитами типа упомянутой здесь mhdd. Так вот, если запись пройдёт успешно, сектор будет помечен рабочим. Если нет, будет увеличен счётчик перемещённых секторов.

    Перемещаются, кстати, сектора в специально зарезервированный участок, обычно в конце диска. Логически он остаётся там же, где был, но фактически головка бегает за ним в другое место.
    Ответ написан
    Комментировать
  • Как подключить socket_create()?

    valerium
    @valerium
    Изобретая велосипед
    При подключении расширений PHP в Windows нужно внимательно смотреть на то, с каким ключами и каким компилятором был собран сам PHP. Для этого в своём phpinfo() внимательно смотрите в строку Configure Command и выбирайте одну из версий здесь.
    Ответ написан
    1 комментарий
  • Как писать многострочный код Python'a в консоли?

    valerium
    @valerium
    Изобретая велосипед
    Через точку с запятой.
    >>> a = 4; b = 4; sum = a + b; sum 
    8


    Если «выводов» будет несколько, каждый будет на новой строке.
    Ответ написан
    3 комментария
  • Какой инструмент использовать для личной БД с блогом?

    valerium
    @valerium
    Изобретая велосипед
    Как велолюбитель могу предложить взять какой-нибудь из популярных вэб-фреймворков и сообразить что-нибудь самому. Сначала накатать блог, а потом к нему уже прикручивать нужные хотелки.

    Минусы очевидны — потребуется время и умение прогать.

    Плюсы не менее очевидны — почти абсолютная свобода действий. Можно соорудить именно такую базу данных с такими таблицами, какие нужны Вам, повесить на эти таблицы свои триггеры и обработчики и т. п. Например, считать финансы. С помощью CMS это довольно проблематично организовать. Ну и, безусловно, это будет неплохим способом изучить язык, фреймворк, базы данных.
    Ответ написан
  • Почему ошибка invalid syntax появляется только в Wing IDE (python)?

    valerium
    @valerium
    Изобретая велосипед
    Похоже, что WingIDE использует второй Python, а IDLE третий.
    Ответ написан
  • Можно ли заменить связующую таблицу mysql на поле со значением в виде json массива?

    valerium
    @valerium
    Изобретая велосипед
    Вы потеряете самое интересное — возможность пользоваться вторичными ключами, то есть делать быстрые и удобные выборки.

    Точнее, всегда можно воспользоваться встроенными функциями MySQL, извлечь из JSONа индексы и сделать ещё один запрос, но Вы представьте, сколько это лишней работы как для программиста, так и для сервера.

    Другое дело, если Вам для каких-то целей список этих индексов регулярно нужен в виде JSONа. Тогда можно либо триггером регулярно перезаписывать это значение (но хранить его как дополнение к таблице user2org, а не вместо неё), либо написать хитрый SQL запрос, который будет этот самый JSON на лету формировать.
    Ответ написан
    7 комментариев
  • Отправляет ли sphinx e-mail на адрес root@ip после индексации, как отключить? Или что шлет почту на сервере linux?

    valerium
    @valerium
    Изобретая велосипед
    Регулярно слать письма может cron.

    А что это за VPS такой, который ограничивает отправку почты?
    Ответ написан
  • Как с помощью PHP отправлять http запросы?

    valerium
    @valerium
    Изобретая велосипед
    Боюсь, с помощью средств PHP, доступных через web-интерфейсы (mod_php, [fast-]cgi) этого сделать нельзя, и, откровенно говоря, слава Богу!

    Вообще же slow HTTP POST несложно организовать, открыв ручками сокет. А вот рекурсивно запрашивать себя не получится никак, потому что HTTP-сервер прибьёт процесс PHP сразу же после обрыва соединения, и правильно сделает. Для этих целей существует CLI-интерфейс. Тут на Ваш вкус можно писать демона, либо запускать из планировщика.

    P.S. Пакости пакостить — трижды фу.
    Ответ написан
  • Можно ли изменять в файле CSV конкретную строку?

    valerium
    @valerium
    Изобретая велосипед
    А что мешает поступить как белый человек, то есть распарсить CSV, пройтись по нему циклом и исправить нужные значения, а потом записать эти данные обратно в файл?

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

    Да, на огромном файле скрипт работать будет долго, может, даже несколько минут. Но файлы — они такие. Нужна скорость — берите базу данных.

    Исправить только одно значение теоретически можно, но геморроя не оберётесь. Например, представьте ситуацию, когда нужно не просто изменить пару байт, а добавить их в середину файла.
    Ответ написан
  • Известны php session, что можно выташить ещё с сайта? и как себя обезопасить?

    valerium
    @valerium
    Изобретая велосипед
    Если подменить сессию, то можно получить доступ ко всему, что пользователь может сделать и увидеть, залогинившись.

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

    • Сессию можно привязать к IP и браузеру, это защитит от подбора чужого ID.
    • Идентификатор сессии должен быть одноразовым и обновляться при каждом обращении к серверу.
    • У идентификатора должен быть разумный срок годности (несколько часов или суток, в зависимости от уровня паранойи).
    • Куки нужно передавать только через HTTPS, это до некоторой степени исключит перехват ID сессии человеком-в-середине.
    • Подтверждение критичных действий по другому каналу (почта, SMS, Telegram и т. п.).


    И да, что за файл Вы такой нашли-то? Это, случаем, не тот самый, в который PHP, собственно, и пишет свои сессии? Если нет, то такой файл не нужен. Если да, то в порядке паранойи можно ограничить доступ к нему на уровне файловой системы, но вообще достаточно, чтобы не было доступа из web-а.
    Ответ написан
    Комментировать
  • Как получать котировки с биржи?

    valerium
    @valerium
    Изобретая велосипед
    Подавляющее большинство бирж отдают котировки по протоколу FIX, однако, как тут уже отмечали, реальновременные котировки стоят немалых денег. Кроме того, бирж много, и договариваться со всеми и разбираться с особенностями реализации протокола каждой биржей - то ещё геморроище.

    Однако для анализа Вам вполне может хватить котировок из вторых или третьих рук. Для этого можно договориться за уже гораздо более умеренную плату с каким-нибудь посредником. Например, довольно хорош Thomson Reuters, хотя о расценках вообще ничего не знаю. Можно так же найти какого-нибудь брокера, который даст вам доступ к своим серверам через FIX. Однако учтите, что Вам нужен полноценный брокер, который имеет выход на биржу и непосредственное исполнение, а не "кухня".
    Ответ написан
    Комментировать
  • Как загрузить все файлы из папки в Mysql?

    valerium
    @valerium
    Изобретая велосипед
    Или в цикле :-)
    for i in `ls -1`; do mysql -u admin -pw12345678 databasename < $i; done

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

    В Вашем же варианте две ошибки. Во-первых, Вы пытаетесь передать программе mysql на стандартный ввод (через пайп | ) список файлов, хотя она туда принимает только непосредственно SQL код. То есть, Вам нужна команда cat, а не ls. Во-вторых, с помощью < Вы указываете оболочке на необходимость передать на тот же стандартный ввод содержимое некоторого файла, но сам файл не указываете, вот он и удивляется.
    Ответ написан
    Комментировать
  • Почему раздел 5 начинается не на границе физического сектора?

    valerium
    @valerium
    Изобретая велосипед
    Нет, это, безусловно, не смертельно, может немного понизить производительность. Если Вы не замечаете существенных лагов, можно смело забить - оно не стоит мороки с переносом сотни гигабайт.
    Ответ написан
    1 комментарий
  • Какую литературу следует выбрать для освоения linux?

    valerium
    @valerium
    Изобретая велосипед
    Если Linux интересует только с точки зрения пользователя (то есть не нужны глубокие знания в администрировании), очень советую эту книгу, она научит самому главному - магии консоли и скриптов. Без этих навыков Вы не ощутите и половины плюшек от миграции.

    Ну и, безусловно, лучшей помощью будет друг-линуксоид, так как смена ОС - очень индивидуальный вопрос, одни детали кажутся очевидными, к другим не знаешь, с какой стороны подступиться. Хорошо, когда есть человек, который невнятное бормотание сможет перевести хотя бы в осмысленный запрос в гугль :-)
    Ответ написан
    Комментировать
  • Как организовать хранение товаров-замен для оптимизации поиска?

    valerium
    @valerium
    Изобретая велосипед
    Если замены двунаправлены независимо от уровня, то есть (по приведённому Вами примеру) A является заменой для E, то можно просто ввести ещё одно поле, которое будет одинаковым для всех товаров в одной группе замены. Что-то вроде связи многие-к-одному, но без дополнительной таблицы. Хотя никто не мешает ввести и дополнительную таблицу, чтобы дать имя группе замены.

    Ну и, само собой, индекс по этому дополнительному полю.
    Ответ написан
    Комментировать
  • Как разумно составить следующий запрос mysql?

    valerium
    @valerium
    Изобретая велосипед
    SELECT title, count(*) score FROM table
    WHERE
        date >= '2015-01-01' AND
        date <= '2015-01-07'
    GROUP BY title;

    Если под первой неделей подразумеваются не первые семь дней, а календарная неделя, то будет чуть сложнее, нужно вычислить правильные дни.
    Ответ написан
    Комментировать