Как стать автором
Обновить
0
0

Пользователь

Отправить сообщение

10 лет на удаленке и что из этого вышло

Время на прочтение12 мин
Количество просмотров96K

Содержание


1. Первая работа
2. Первый экономический кризис и первая удаленка
3. Год за два
4. Покоряем Москву, не выходя из дома в провинции
5. Второй (валютный) экономический кризис
6. А в это время в России
7. А что сейчас?
8. Выводы/Плюсы/Минусы
9. ЧаВО
Читать дальше →
Всего голосов 131: ↑120 и ↓11+109
Комментарии90

Как выучить иностранный язык

Время на прочтение10 мин
Количество просмотров115K

Я расскажу о том, как изучать иностранный язык и буду это делать на примере личного опыта изучения английского языка. Английский я начал учить в 36 лет, а уже сейчас у меня свободный английский язык (как письменный, так и устный), подтверждённый официальными сертификатами. Чтобы не быть голословным: у меня есть сертификат IELTS 7.5 баллов (это С1 level) и сертификат переводчика NAATI. Короче, я знаю о чем говорю.


Оглавление:


  1. Отступление про умных людей и прочих полиглотов
  2. Первый шаг
  3. Какой преподаватель нужен (уровень преподавателя)
  4. Где искать преподавателя
  5. Развитие навыков: слушание
  6. Развитие навыков: чтение
  7. Развитие навыков: письмо
  8. Развитие навыков: разговор: произношение
  9. Развитие навыков: разговор: языковой барьер
  10. Словарный запас
  11. Самое главное


Итак, вопрос: “Как выучить английский язык?”.

Читать дальше →
Всего голосов 97: ↑92 и ↓5+87
Комментарии158

Нарастающий итог в SQL

Время на прочтение10 мин
Количество просмотров141K
Нарастающий (накопительный) итог долго считался одним из вызовов SQL. Что удивительно, даже после появления оконных функций он продолжает быть пугалом (во всяком случае, для новичков). Сегодня мы рассмотрим механику 10 самых интересных решений этой задачи – от оконных функций до весьма специфических хаков.
Читать дальше →
Всего голосов 54: ↑52 и ↓2+50
Комментарии49

Логирование в распределенном php-приложении

Время на прочтение17 мин
Количество просмотров40K


В статье пойдет речь о том, какую пользу оказывает логирование. Расскажу о логах по PSR. Добавлю немного личных рекомендаций по работе с уровнем, сообщением и контекстом логируемого события. Будет приведен пример, как можно организовать логирование и мониторинг с помощью ELK в приложении, написанном на Laravel и запущенном через Docker на нескольких инстансах. Распишу важное правило системы оповещения. Приведу пример скрипта, который поднимает одной командой весь стек мониторинга.

Читать дальше →
Всего голосов 30: ↑30 и ↓0+30
Комментарии16

Как сделать так, чтобы сотрудники сами учились работать в новых системах

Время на прочтение5 мин
Количество просмотров12K
В одном банке внедрили новую систему для рабочих мест операторов. Это для нас любой новый интерфейс — простой. А у некоторых людей даже сдвиг кнопки вызывает панику. Тут же новым было всё. В итоге работа встала. Как часто бывает, люди самостоятельно штудировать мануалы не хотели. Чаще звонили в техподдержку и просили коллег показать, на какие кнопочки нажимать. Да и создание инструкций отнимало массу времени.

Когда-то с такой же проблемой столкнулись и создатели сервиса, о котором мы сегодня расскажем. Они задумали перенести инструкции в форму интерактивных подсказок прямо в системе. Знаете, как когда вы первый раз запускаете приложение или игру, вам показывают: вот это — кнопка стрельбы, вот так — бегать, нажмите «присесть», чтобы присесть, и так далее.

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



Вот так они это сделали.
Читать дальше →
Всего голосов 40: ↑40 и ↓0+40
Комментарии19

Альтернативный подход к подписке на события, или а так ли нужен EventObject

Время на прочтение6 мин
Количество просмотров4.1K

Резюме


Целью этой статьи является попытка посмотреть, с иной точки зрения, на описание систем распространения событий.
 
На момент написания этой статьи большинство ведущих фреймворков на php реализуют систему событий, в основе которой лежит описание объекта события EventObject.
 
Это стало стандартом в php, что недавно было подтверждено принятием стандарта psr/event-dispatcher.
 
Но получается так, что описание объекта события мало помогает при разработке слушателя. За деталями под кат.

Читать дальше →
Всего голосов 23: ↑21 и ↓2+19
Комментарии6

Magento 2. Monolog или как писать логи

Время на прочтение14 мин
Количество просмотров14K
Изучая различные модули для Magento 2 можно заметить, что логирование используется значительно реже по сравнению с Magento 1. В большей степени это связано с тем, что запись логов стала сложнее. Здесь я бы хотел сконцентрироваться на технической стороне вопроса, а именно как логировать данные, как писать логи в свой собственный файл и что же такое Monolog.
Читать дальше →
Всего голосов 6: ↑6 и ↓0+6
Комментарии0

Ещё одна система логирования, теперь на ElasticSearch, Logstash, Kibana и Prometheus

Время на прочтение13 мин
Количество просмотров51K


Всем разработчикам известна ситуация, когда приложение заглючило и пользователь не может сделать то, что ему нужно. Причины разные: пользователь ввёл неправильные данные, у него медленный интернет и многое другое. Без системы логирования разобрать эти ошибки сложно, а порой невозможно. С другой стороны, система логирования — хороший индикатор проблемных мест в работе системы. Я расскажу, как построить систему логирования в своём проекте (да, ещё раз). В статье расскажу об Elasticsearch + Logstash + Kibana и Prometheus и как их заинтегрировать со своим приложением.

Читать дальше →
Всего голосов 24: ↑23 и ↓1+22
Комментарии33

Учим Zend Memcache работать с тегами

Время на прочтение6 мин
Количество просмотров2.5K
В проекте, где я являюсь разработчиком, используется кеш. Сразу хочу оговориться, проект высоконагруженный, порядка двух тысяч человек в сутки. Удобным решением снять нагрузку с базы данных стало использование мемкеша. Поскольку проект на Zend Framework'е реализацию работы кеша соответственно взяли его. Но как выяснилось не самая удачная реализация, поскольку полностью отсутствует работа с тегами, это не дает нам возможности чистить кеш выборочно.
Читать дальше →
Всего голосов 16: ↑8 и ↓80
Комментарии27

Разработка высоконагруженного WebSocket-сервиса

Время на прочтение10 мин
Количество просмотров64K
Как создать веб-сервис, который будет взаимодействовать с пользователями в реальном времени, поддерживая при этом несколько сотен тысяч коннектов одновременно?

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

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

В конце статьи приведены полезные ссылки на инструменты разработки, тестирования и мониторинга.

Читать дальше →
Всего голосов 43: ↑39 и ↓4+35
Комментарии58

Нужно ли чистить строки в JavaScript?

Время на прочтение6 мин
Количество просмотров79K
Что? Строки могут быть «грязными»?

Да, могут.

//.....Какой-то код
console.log(typeof str); // string
console.log(str.length); // 15
console.log(str); // "ччччччччччччччч"

Вы думаете, в этом примере строка занимает 30 байт?

А вот и нет! Она занимает 30 мегабайт!
Читать дальше →
Всего голосов 220: ↑219 и ↓1+218
Комментарии224

Еще один способ использования Webpack 4 и разделение кода

Время на прочтение4 мин
Количество просмотров27K

Предыстория


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


Для тех, кто все еще не в курсе, плагина webpack.optimize.CommonsChunkPlugin больше нет. Совсем. Вместо этого предлагается в конфиге писать следующее:


module.exports = {
  // ...
  optimization: {
    splitChunks: {
      chunks: "all"
    }
  }
  // ...
}

Это должно работать как магия. Т.е. теперь не мы говорим webpack'у что сделать общим чанком, а он сам все сделает, да еще может даже и лучше нас.


И наступит счастье. Шутка. На самом деле нет...

Читать дальше →
Всего голосов 18: ↑17 и ↓1+16
Комментарии25

Поиск правильного способа разделения материалов сайтов с помощью Webpack

Время на прочтение17 мин
Количество просмотров27K
Поиск наилучшего способа организации материалов веб-проектов может оказаться непростой задачей. Существует множество различных сценариев работы пользователей с проектами, множество технологий и других факторов, которые нужно принимать во внимание.

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

image
Читать дальше →
Всего голосов 32: ↑30 и ↓2+28
Комментарии26

Героям III — 20 лет

Время на прочтение5 мин
Количество просмотров51K
image


Мы копали.
Мы прокачивали логистику.
Мы выбирали опыт, а не золото.
Мы оббегали мельницы и гномиков каждую неделю.
Мы захватывали замок на седьмой день.
Мы считали самым подлянским артефактом «наручники».
Мы все хотели нанять Крэга Хака (4-0-1-1).
Мы понимали, что если получил Town Portal, то победил.
Мы плакали от выбора между «дипломатией» и «зоркостью» (для последней ячейки навыков игрока 19 левела).
Мы ненавидели, когда «комп» вступал в бой с одним юнитом, лупил молнией по лучникам и сбегал сука.
Мы проводили новый год, играя всю ночь на самой большой карте, сначала против «компов», потом против друг друга.
Мы телепортировали гидр в самую сочную кучу стрелков.
Мы до сих пор знаем, сколько атаки у неапгрейженного грифона, а сколько у апгрейженного.
Мы благославляли, ослепляли, проклинали, кастовали камнекожу.

Разрушались Миры, кипели страсти и драмы происходили по ту и по эту сторону монитора.

Давайте делиться историями.

Моя история:
Играем в хотсит втроем с одноклассниками против 5 «компов». Я как-то жутко быстро развился до апгрейженных титанов. И тут возник спор, действует ли заклинание «Армагеддон» на апгрейженных титанов. Меня заставляли во время боя накастовать «Армагеддон», я отказался. Тогда эти двое меня побороли, вышли на болевой, тот что покрече удерживал захват, а второй вступил в бой с NPC и, ехидно улыбаясь, кастанул. У каждого есть такие друзья.

Всего голосов 94: ↑90 и ↓4+86
Комментарии370

Laravel + Docker: наш успешный опыт использования

Время на прочтение8 мин
Количество просмотров43K
image

О чем эта статья


В статье пойдет речь о нашем опыте использования Docker для быстрой настройки масштабируемого dev окружения для web разработки. Я коротко расскажу о задачах, которые стояли перед нами и об инструментах, которые были выбраны для решения этих задач. Статья отмечена значком tutorial, потому что вы найдете в ней инструкцию по разворачиваю окружения у себя. По сравнению с аналогичными статьями (ссылки в конце статьи), здесь будет меньше технических деталей и больше живых примеров.
Читать дальше →
Всего голосов 19: ↑10 и ↓9+1
Комментарии8

Версионная миграция структуры базы данных: основные подходы

Время на прочтение15 мин
Количество просмотров136K
Проблемы контроля версий баз данных и миграций между версиями уже не раз поднимались как на Хабре (1, 2, 3 и др.), так и в Интернете (преимущественно, англоязычном).

В первом разделе этой статьи я рассматриваю основные проблемы, которые возникают в командах программистов при внесении любых изменений в структуру базы данных. Во втором разделе я попытался выделить основные общие подходы к тому, в каком виде изменения структуры базы данных можно хранить и поддерживать в процессе разработки.
Читать дальше →
Всего голосов 89: ↑87 и ↓2+85
Комментарии83

Простые миграции с PHPixie Migrate

Время на прочтение5 мин
Количество просмотров7.3K
image Запуск консольного расширения несколько недель назад позволил гораздо расширить спектр задач решаемых с помощью PHPixie и её компонентов. И теперь я рад представить вам PHPixie Migrate — утилиту для миграции баз данных. Как и другие компоненты она может работать полностью самостоятельно, и в конце статьт я приведу пример того как запустить её без фреймворка.
Читать дальше →
Всего голосов 19: ↑16 и ↓3+13
Комментарии25

Версионная миграция структуры БД: от теории к практике

Время на прочтение3 мин
Количество просмотров12K
В топике рассматривается еще одна простая система версионирования структуры БД, а также ИМХО, почему нам не подходят другие.
Читать дальше →
Всего голосов 31: ↑25 и ↓6+19
Комментарии68

Удобный БЭМ

Время на прочтение5 мин
Количество просмотров40K


Приветствую. В этой статье я расскажу, как можно изменить БЭМ, сохранив лучшие его черты и избавившись от худших.
Читать дальше →
Всего голосов 37: ↑32 и ↓5+27
Комментарии74

Распределённый чат на Node.JS и Redis

Время на прочтение11 мин
Количество просмотров37K

Результат пошуку зображень за запитом "голубиная почта"


Небольшой вопрос/ответ:


Для кого это? Людям, которые мало или вообще не сталкивались с распределенными системами, и которым интересно увидеть как они могут строится, какие существуют паттерны и решения.


Зачем это? Самому стало интересно что и как. Черпал информацию с разных источников, решил выложить в концентрированном виде, ибо в свое время сам хотел бы увидеть подобную работу. По сути это текстовое изложение моих личных метаний и раздумий. Также, наверняка будет много исправлений в комментариях от знающих людей, отчасти это и есть целью написания всего этого именно в виде статьи.


Постановка задачи


Как сделать чат? Это должно быть тривиальной задачей, наверное каждый второй бекендер пилил свой собственный, так же как игровые разработчики делают свои тетрисы/змейки и т. п. Я взялся за такой, но чтоб было интереснее он должен быть готов к захвату мира, чтоб мог выдерживать сотниллиарды активных пользователей и вообще был неимоверно крут. Из этого исходит ясная потребность в распределенной архитектуре, потому что вместить все воображаемое количество клиентов на одной машине — пока нереально с нынешними мощностями. Заместо того чтоб просто сидеть и ждать на появление квантовых компьютеров я решительно взялся за изучение темы распределенных систем.


Стоит отметить что быстрый отклик очень важен, пресловутый realtime, ведь это же чат! а не доставка почты голубями.


%рандомная шутка про почту россии%


Использовать будем Node.JS, он идеален для прототипирования. Для сокетов возьмем Socket.IO. Писать на TypeScript.


И так, что вообще мы хотим:


  1. Чтоб пользователи могли слать друг-другу сообщения
  2. Знать кто онлайн/оффлайн

Как мы это хотим:

Всего голосов 35: ↑32 и ↓3+29
Комментарии11

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность