• Переход с PHP на …?

    Mithgol
    @Mithgol
    Присоединяюсь к рекомендациям попробовать Node.js, аргументом в пользу которого является то обстоятельство, что веборазработчику при его изучении не приходится изучать заодно новый язык: в Node используется JavaScript, на котором и без того работает клиентская часть сайтов.

    Таким образом для перехода на Node достаточно изучить API Node и освоить выбор нужных готовых модулей с открытым исходным кодом, разработанных сообществом. Модули можно находить по списку в вики или искать по ключевым словам на сайте npm.

    В частности, готовых NoSQL-модулей там дофигищща. (Есть даже NoSQL-средства, специально разработанные для Node — в частности, NeDB.)
    Ответ написан
    Комментировать
  • Node.js в качестве server-side для enterprise приложения?

    Stdit
    @Stdit
    По моему опыту, nodejs — удобная, стабильная и быстрая штука, имеющая отличное сообщество и много хороших библиотек в npm. Преимущества можно перечислять долго, лучше сразу перейти к проблемам.

    — Сложно найти готовых к работе толковых программистов, даже среди фронтендщиков. Но можно обучить. На обучение и понимание среды nodejs, API, асинхронности, замыканий, калбэков, событий, функционального подхода — уходит примерно месяц-два.
    — Библиотеки из форнтендов использовать можно, но только если они грамотно написаны и оптимизированы для перманентной работы. Иначе есть риск, что они сожрут всю память или повесятся.
    — Сервер nodejs обычно однопоточный, со всеми вытекающими. Имеется возможность форкать и открывать дочерные процессы, на это нужны дополнительные затраты труда. Но это требуется только в исключительных случаях.
    — Код пишется в основном легко, если следовать чёткому стандарту, который обычно навязывается используемым фреймворком. Однако javascript, ввиду своей нестрогости, неустойчив к коррозии, в спешке или по неопытности можно наделать рака и превратить жизнь своей команды в ад.
    — При сложной логике со множеством вызовов можно без злого умысла нагородить «лестниц» из калбеков. Однако, проблема решается разными вариантами библиотек управления задачами (async, Q, и т.д.). Вообще лучше делать максимальную декомпозицию кода, создавать бесчисленные функции внутри функций — не очень хорошая практика.

    По поводу камней:
    — Обычно, всякие руководства и мануалы типа «hello world» используют один сокет для соединения с БД. На практике оказалось, что если этот сокет зависает под тяжёлым запросом, то все остальные запросы прилежно ждут его освобождения. Поэтому первое, что нужно сделать в новом проекте — это подключить database connection pool.
    — Случилось так, что количество одновременных подключений к серверу перевалило за тысячу, и внезапно возникли необъяснимые аномалии и отказы. Как выяснилось, страшного ничего не произошло, и нужно было просто в операционной системе разрешить открывать на порядок больше файловых/сокетных дескрипторов.
    — Память для nodejs лучше ограничивать ключами запуска и отдавать больше для БД (если они на одной машине). В противном случае nodejs не спешит запусктать сборщик мусора (это ведь затратная операция) и разрастается.
    — Перезагрузки nodejs из-за внезапных падений от багов решаются специальными библиотеками, например forever.
    — Чтобы nodejs не вылетал из-за исключений, нужно ставить глобальный обработчик uncaughtException, который пишет их в лог или сразу шлёт на мыло ответственному лицу.
    — Нужно не забывать отвязыватсь обработчики от событий по окончании работы подписанного на событие объекта (removeListener()).

    По поводу фреймворков, используем express, потому что он красивый, простой и мы к нему привыкли.
    Ответ написан
    2 комментария
  • Yet another framework… 2b||!2b?

    EugeneOZ
    @EugeneOZ
    Да.
    Ответ написан
    Комментировать
  • Как правильно использовать CSRF токены?

    SSiarhei
    @SSiarhei
    У нас лично токен выдается на логине и хранится в сессии. Зачем каждый раз токен новый генерить?
    Ответ написан
  • IE в Mac OS

    Stdit
    @Stdit
    Стоит VirtualBOX с виндой. Файлы шарятся стандартными средствами (общие папки). Проблем нет, потребляет в айдле 5-7% цп.
    Ответ написан
    Комментировать
  • Статья о клиентском JavaScript, какие темы осветить?

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    Я бы с интересом почитал про проблемы в knockout.js и их решения.
    Ответ написан
    1 комментарий
  • Статья о клиентском JavaScript, какие темы осветить?

    sHinE
    @sHinE
    веб-разработчик, php/js/mysql и сопутствующее
    Расскажите. Чего точно лично мне не хочется — очередной статьи как сделать наследование в js.
    Ответ написан
    1 комментарий
  • В чём граница между библиотекой и фреймворком?

    Направление вызовов прежде всего. Фреймворк вызывает ваш код, он как бы внутри его. А библиотеку вызывает ваш код, она внутри его. А требования определенной структуризации и ограничения, упомянутые выше, это лишь следствия, чтобы фреймворк знал что и где вызывать и знал что делать с возвращаемыми значениями.
    Ответ написан
    1 комментарий
  • Что спрашивают на собеседовании в Яндекс?

    meteozond
    @meteozond
    Не знаю как насчет c++, я одил сегодня на python-иста.

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

    Была классическая, для яндекса, задачка, неоднократно упомянутая в Радио-Т, про банерокрутилку. Задача элементарна и не стоит выеденного яйца. Однако нужен только один конкретный единственно правильный ответ, до которого я лично, к стыду, не додумался. Вспомнились задачаки на сообразительность (про монетки, рюкзаки и стаканы) на которые можно ответить только заранее зная ответ.

    Предлагают написать кусочек кода для оценки стиля кодирования. Так что лучше потратить больше времени и написать кратко, элегантно, по-джедайски. На этом шаге мое собеседование для меня лично закончилось скривленными лицами и словами «в питоне обычно все компактнее» (думаю это было далеко не единственное замечание).

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

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

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

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

    И да, выходя из здания, чувствуешь некислый батхерд.
    Ответ написан
    2 комментария
  • Что спрашивают на собеседовании в Яндекс?

    payalnik
    @payalnik
    Юзер без аккаунта попросил меня запостить его ответ:

    «Я не так давно был на собеседовании в Яндексе, поэтому, если сочтете нужным выложить это в коммент, вот некоторые пункты собеседования:

    сначала просто общие вопросы, чтобы узнать, откуда человек узнал о вакансии. Очень кривят лица, если сказать, что ты в то время просто массово рассылал резюме и тебе ответили из нескольких контор, включая Яндекс. Видимо, надо дать понять, что ты сразу шёл именно к ним. Иначе сразу -5 к успеху.
    спрашивают о предыдущих местах работы. Если у тебя иная специальность (я — юрист по диплому, последние несколько лет занимаюсь сайтоделаньем, а пригласили меня на менеджера Яндекс. Почты после прохождения тестового задания), то будут спрашивать, почему вдруг решили сменить специализацию и поработать у них.
    спросят, знаете ли Вы о существовании таск-менеджеров и умеете ли ими пользоваться;
    если Вы приглашены на вакансию менеджера какого-либо сервиса (Почта-Карты и тп), будут подробно и долго спрашивать, что бы Вы изменили в этом сервисе (если приглашают на программиста общего профиля, будут задавать тестовые задания по специфике с привязкой к какому-нибудь своему сервису). Тут будет ошибкой активно восхвалять конкурентов (я надеялся на объективность и при вопросе „Какой почтой пользуетесь? И почему?“ я честно сказал „Гугловской“. И почему). Предложенные правки к сервису выслушали, кое-где поспорили, кое-что они потом поправили, судя по всему.
    если Вы предложите свою идею для сервиса, нужно будет конкретно с нуля описать, как Вы её воплотите. В качестве правильно ответа процитирую менеджера (за точность не ручаюсь) „Вам надо было ответить так: во-первых, я нарисую примерный макет этой новой кнопки для интерфейса, потом пойду к проектировщику и поговорю с ним, чтобы решить, в какую часть страницы лучше вставить эту кнопку и какая это будет кнопка (чекбокс, ниспадалка, просто кнопка), после этого уже идти к программистам и как менеджер проекта объяснить им свои идеи с учетом ответа проектировщика.“
    очень большое внимание уделяется а) насколько лично Вы понравитесь тому, кто проводит собеседование (Марина — это человек из отдела HR, она просто организует интервьб и присутствует на нём, но непосредственно проводить собеседование будет Ваш будущий коллега), б) насколько хорошо Вы чувствуете себя в команде.»
    Ответ написан
    2 комментария
  • Что спрашивают на собеседовании в Яндекс?

    Tobanab
    @Tobanab
    На счёт яндекса не знаю, а вот про гугл были статьи: раз, два, три, четыре, пять
    Ответ написан
    2 комментария
  • Имеет ли смысл конвертировать все изображения на сайте в PNG?

    MTonly
    @MTonly
    Веб-разработчик с 2002 года
    1. Принцип сжатия JPEG основан на разбиении изображения на квадраты 8×8 пикселов и заливке этих квадратов градиентами. Подходит для фотографий (где по определению много градиентов и мало чётких объектов) и не подходит для штриховых изображений типа схем (для наглядности следует попытаться представить, что становится, скажем, с однопиксельной линией при попытке представить её как градиент 8×8; полезно также рассмотреть такое JPEG-изображение при сильном увеличении).

    2. Принцип сжатия GIF и PNG-8 (не путать с PNG-24) основан на сужении цветовой палитры до минимума, достаточного для более-менее корректного отображения изображения. За счёт сужения палитры каждый вариант цвета можно закодировать меньшим количеством байт, этим (помимо алгоритмов архивации) и достигается сжатие. Максимальное количество оттенков — 256. Соответственно, GIF и PNG-8 хорошо подходят для субъективно беспотерьного (кодируется каждый пиксел) сжатия штриховых изображений с однотонными областями и небольшим количеством оттенков (логотипов, графиков, схем и проч.) и НЕ подходит для подавляющего большинства фотографических изображений (в фотографиях количество оттенков обычно сильно больше, чем 256, а если и не больше, то объём файла получается неоправданно большим, поскольку GIF/PNG-8 честно кодируют каждый пиксел изображения).

    3. PNG-24 (не путать с PNG-8) — сжатие вообще без потерь. По сути специализированный архиватор для изображений. Соответственно, объём выходного файла наибольший и обычно значительно больше, чем у GIF/PNG-8, равно как и JPEG. Обычно применяется либо при необходимости сжатия без потерь, либо при необходимости использовать полупрозрачность, либо при сохранении протяженных однотонных областей и/или однонаправленных градиентов (такие градиенты сжимает эффективнее, чем GIF/PNG-8).
    Ответ написан
    6 комментариев
  • Имеет ли смысл конвертировать все изображения на сайте в PNG?

    ahromenko
    @ahromenko
    Я считаю не нужно. Фотографии в PNG это странно. В PNG только иконки, небольшие элементы дизайна.
    Ответ написан
    Комментировать