• Автоматическая обработка почты на linux?

    @serg-mizun
    Модератор удалил мой ответ, хотя в нем была вся нужная информация. С помошью curl забираете почту, потом sed или awk для разбора и потом уже что хотите делаете. Все нормально можно сделать bash скриптом.
    @модератор - прежде чем что то удалять надо хоть немного иногда думать. Это тема про линукс, тут одного слова curl было более чем достаточно.
    Ответ написан
    3 комментария
  • Есть ли безопасность в Android?

    Frankenstine
    @Frankenstine
    Сисадмин
    Браузер в андроиде не имеет диалога "сохранить файл, да/нет" - если сайт вам в наглую втюхивает .apk он будет скачан. Однако автоматически, без подтверждения пользователем, он установлен не будет, тем более без установленной галки "установка из небезопасных источников".
    То, что вы его не смогли найти, это не удивительно, я тоже порой не могу вспомнить, куда оно качает :)
    Жаловаться, что в андроиде можно скачать файл, который отдаёт сервер - всё равно что жаловаться, например, что автомобиль без включенного ручника может уехать с не горизонтальной стоянки.
    Ответ написан
    Комментировать
  • Есть ли плагин для ведения ежедневной статистики работы в среде Idea Jetbrains?

    GavriKos
    @GavriKos
    Сомнительна эффективность такой статистики. Работа программиста не меряется строчками кода. А как быть с автогенерируемыми строками? Их считать? А пустые строки? Ну и т.д.
    Как раз чекины/коммиты/пуши - более хороший показатель.
    Ответ написан
    1 комментарий
  • На чем писать фронтенд легко и непринужденно?

    AleksDesker
    @AleksDesker
    Легко и непринужденно это jQuery - он для всех хорош и никого ни к чему не обязывает. Фреймворк это уже серьезный выбор, он диктует архитектуру часто, фреймворк нужно неплохо знать, прежде чем начинать что-то более менее серьезное на нем писать.
    Ответ написан
    1 комментарий
  • Как выучить английский начинающему программисту?

    Начни с грамматики. В идеале — "красный мёрфи" с преподавателем. Если денег нет, пройди азы в онлайне на одном из триллиардов сайтов, а потом окружи себя языком: фильмы, ютуб, книги и тд. Подключи google translate к браузеру и читай западные it-блоги.
    Ответ написан
    Комментировать
  • Как выучить английский начинающему программисту?

    @maxyc_webber
    Web-программист
    Я б еще посоветовал (В свое время мне это дало очень сильный толчек в обучении) найти способ общаться на английском с носителем. Желательно, который не знает русского языка.
    В эру популярности чатиков познакомился с каким то филлипинцем. Слово за слово, он на кривом английском, я на не менее кривом англицком изьяснялись. сразу оговорили цель общения. мол не просто языком почесать, а с целью чесать более уверенно )))
    Можно (но очень редко мне кажется ибо быстро пропадает желание) пытаться общаться с другом или родственником только на английском. например 1-2 дня в неделю. и хоть тресни. должен изьясниться только на английском или жестами. русский не юзать.
    Ответ написан
    2 комментария
  • POST или GET что безопаснее?

    @TsSaltan
    Безопасно использовать ssl, и методы http тут ни при чем.
    GET - сообщаем серверу, что мы от него хотим получить, например, поисковой запрос, номер страницы, какой-то модуль и т.д.
    POST - для передачи данных, будь то текст (логин/пароль/личная информация) или двоичные данные (файлы)
    Ответ написан
    Комментировать
  • Как оплатить услуги DigitalOcean с расчётного счёта ООО?

    ColorPrint
    @ColorPrint
    к.т.н., HighLoad, webhosting, domains registrar...
    Внешнеэкономическая деятельность со всеми вытекающими...
    Валютный контроль, обязанность удержать НДС с DigitalOcean как с нерезидента (а Вы будете выступать налоговым агентом)...
    Может реселлеры какие в России есть у них? Так будет намного проще оформить.
    Ответ написан
    Комментировать
  • Сайт, способный выдержать высокую нагрузку (?)

    @egorinsk
    Начнем с того, что вам это вряд ли нужно для практических целей. В сутках 86400 секунд. Средний нормально написанный сайт (не друпал, не phpBB и прочий кривокод. Не Zend и не симфони) на PHP с использованием MySQL на среднем сферическом VPS в вакууме (с объемом памяти в 256 Мб) выдерживает 40-50 rps. Иногда даже он упирается не в процессор, а в ширину канала.

    40-50 rps * 86 400 = примерно 1-2 млн хитов в сутки (так как нагрузка неравномерна по времени суток). Это примерно 100-200 тыс. среднеактивных посетителей (или 20-50 тыс., если речь не о блоге а о соцсети). Вряд ли у вас столько будет.

    От идеи генерировать статический HTML давайте откажемся сразу: любой функционал чуть сложнее набора неизменных страниц так не сгенерируешь. Сложность кода и число зависимостей кешей будет расти в геометрических прогрессиях. Идея вставлять динамические фрагменты страниц через SSI/AJAX бесперспективна — они все равно будут вызывать запуск PHP, возможно даже увеличивая нагрузку. Лучше написать масштабируемое приложение с хорошим кешированием данных.

    Хорошей идеей мог бы быть отказ от PHP в пользу Java/C++/.NET/D. Но это усложнит разработку: на этих языках все сложнее и дольше пишется.

    Даже если на ваш блог ринутся все читатели Хабра, tema и еще нескольких блогов. Имея грубо написанный самопис на кривоPHP, у нас есть возможность масштабироваться раз в 10 с ростом нагрузки: ставим более мощное железо, расширяем память с 256 Мб до 64 Гб, ставим нормальный 8-ядерный процессор, нормальные диски. Тюним объем кешей MySQL, добавляем APC, начинаем понемного кешировать страницы в мемкеш. Далее, если нагрузка все равно растет, разносим код на несколько фронтендов, и, возможно, делаем мастер-слейв на MySQL. Можно скомпилировать PHP через hiphop.

    Многим проектам этого хватает.

    Но это тупой подход. Сделать репликацию, поставить балансировщик и нарастить память — ума много не надо. Даже обезьяна с этим справится. Гораздо лучше (и интереснее) изначально делать приложение с учетом возможности масштабироваться (что уж там стесняться) неограниченно. И куда как приятнее осознавать, что твое приложение может расти не хуже вконтакта с его отличниками и победителями математических олимпиад.

    Представим, что у нас растет нагрузка и нам надо увеличиться до 1000 нод. Что касается фронтендов (в вашем случае на PHP), если не хватает мощности одного сервера, их (серверов) мы легко можем поставить хоть 1000, хоть 10000 (единственное, надо отказаться от сохранения сессий в локальных файлах, иначе никто не сможет залогиниться. Возможно, стоит перейти на REST и вообще отказаться от сессий). Перед ними ставим N балансировщиков на nginx, настраеваем round-robin в DNS (чтобы запросы валились на них поочередно).

    Как работает round-robin в DNS вы можете увидеть, набрав nslookup vk.com несколько раз.

    Мемкеш также (вы должны использовать мемкеш в приложении) легко масштабируется на N серверов. Лишь бы памяти было много и минимум гигабитная локальная сеть.

    Раздача статики (картинки, CSS, скрипты) тоже банальна — ставим nginx на N серверов и забываем об этой проблеме. Единственная сложность — это раздача видео. Погуглите, на Хабре есть статьи про организацию CDN для видео и сопутствующие проблемы.

    А вот с БД мы получаем затык. Даже если мы настроим мастер-слейв с несколькими слейвами, объем данных на запись на мастер от 1000 PHP-ных фронтендов положит любой сервер. Несмотря на то, что MySQL в сферической конигрурации на среднем сервере в вакууме легко делает 1-5 тысяч выборок по PKEY в секунду, на запись она работает гораздо хуже. Потому, раз уж мы делаем хайлоад сервис, то база тоже должна масштабироваться. Во-первых, можно разнести разные таблицы на разные сервера. Это мало. во-вторых, можно порезать таблицы на куски и разнести на разные сервера. Это то, что надо. То есть, допустим, в соцсети юзеры с ид 1-10000 хранятся на первом сервере в таблице users_1, юзеры 10000-20000 на втором сервере в таблице user_2, и так далее. Распределение записей и таблиц по серверам должно быть не намертво вбитое, а конфигурируемое, чтобы можно было переносить пачки записей с одного сервера на другой, уравновешивая нагрузку. Для этого придется написать небольшое приложение, показывающее распределение нагрузки и позволяющее переконфигурировать шарды.

    Из такой схемы построения БД вытекают очевидные правила: запросы к БД не должны использовать JOIN (так как это невозможно при разнесенных таблицах, и дждойны плохо работают), должны использовать выборку только по индексам, лучше всего по PKEY (так как без индексов слишком медленно) и должны быть как можно проще. Они должны иметь небольшой LIMIT. Также, стоит пользоваться денормализацией данных: например, чтобы получить список фотографий пользователя, мы берем сериализованный список id этих фото, затем выбираем фото по id, а НЕ используем выборку по полю user_id в таблице photos (так как такая выборка не шардится и не масштабируется).

    В общем, запросы должны быть тупыми как пробка и сводиться к SELECT… WHERE id IN (1, 2, 3). Кстати, как дополнительный плюс, такие запросы легко кешировать и очищать такой кеш.

    Для сервисов типа поиска пользователей (как вконтакте) при такой схеме придется писать отдельные приложения на C++, которые будут индексировать БД и хранить данные в памяти. Увы, PHP тут не справится.

    Вы можете почитать про архитектуру высоконагруженных проектов тут: www.insight-it.ru/highload/

    А да, все. что написано выше, лишь теоретические рассуждения. Подумайте 10 раз, прежде чем применять это на практике.
    Ответ написан
    1 комментарий