Как стать автором
Обновить
0
0
Олег @pholeg

Помогатор

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

Основа для большого модульного SPA на Laravel + Vue + ElementUI с CRUD генератором

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

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

Сейчас могу сделать вывод из того, какие решения были удачными, а какие — не очень.
Используя накопленный опыт, задался целью собрать все лучшие решения, на мой взгляд, и создать свою основу для SPA.
Всего голосов 7: ↑5 и ↓2+9
Комментарии6

«Извини, но у меня депрессия»: как работать с заболевшим сотрудником

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

«Извини, кажется, мне надо было раньше это сказать – я столкнулся с депрессией». Такое письмо мне пришло утром от одного из сотрудников, который уже пару дней не мог закрыть несложный тикет.

Контекст: работаю тимлидом в крупной корпорации, в подчинении – удаленная команда из 50 человек (территориальный разброс — от Нью-Йорка до Токио). Столкнувшийся с депрессией сотрудник – мой ровесник (+- 30 лет), работает на этом месте 5 лет. Один из лучших членов команды, стабильно показывает отличные результаты, с мотивацией проблем ранее не было. Рабочий день – ненормированный: то густо, то пусто.

Нет, это не профессиональное выгорание. Работа его всегда драйвила, ничего в ней менять не хочет (ни локацию, ни команду). «Ищу терапевта».
Читать дальше →
Всего голосов 106: ↑97 и ↓9+88
Комментарии241

Хороший разработчик мудр, а не гениален

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


Одним из самых важных уроков, которые я постиг в качестве разработчика 15 лет назад, была эта простая мысль:


Хороший код выразителен, а не впечатляющ.

Я помню, как услышав это спросил «А в чём разница?», и получил ответ.


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


«Впечатляющий» — код, который запоминается. Написание кода, запоминающегося своими сложными структурами и алгоритмами, хотя и почешет ваше эго, станет настоящей болью для того, кто будет поддерживать его в будущем. И если последний окажется маньяком, узнавшим ваш адрес, храни вас Господь от его гнева.


Именно поэтому хороший разработчик мудр, а не гениален. Мудрый разработчик обладает не только умом, но и способностью постоянно думать о последствиях своих действий. Он знает какой конкретно код пишет, для чего он это делает и, главное, как это код поведёт себя в будущем. Или, если проще, мудрый разработчик пытается лечить болезнь, а не симптомы.


«Гениальные» разработчики, так же обладая умом, напротив, думают лишь о настоящем. Они умеют решать текущие проблемы быстро и эффектно. Вот только гора от их хаков и выкрутасов постоянно накапливается и однажды обрушает код, хороня под собой репутации всех причастных. Вот почему Стив Макконнелл однажды верно заметил:


Программирование — не работа в ЦРУ, вам не нужно быть смекалистым.

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




Вот ещё несколько принципов мудрых разработчиков.


Читать дальше →
Всего голосов 55: ↑47 и ↓8+39
Комментарии14

Как проапгрейдить существующий проект с ASP.NET MVC на ASP.NET Core. Практическое руководство

Время на прочтение17 мин
Количество просмотров14K
Этот пост родился из нашего опыта переноса существующего проекта с ASP.NET MVC на ASP.NET Core. Мы постарались собрать в одно целое весь процесс миграции в структурированном виде и описать различные узкие места, чтобы разработчики в дальнейшем могли опираться на этот материал и следовать дорожной карте при решении подобных задач.

Пара слов о нашем проекте. Мы open-source eCommerce платформа на ASP.NET, которая к моменту переноса успешно существовала уже 9 лет. Мы делали миграцию 2 года назад — но руки дошли написать об этом только сейчас. На тот момент мы были одним из первых крупных проектов, кто решился на подобный шаг.

Почему стоит перейти на ASP.NET Core


Прежде чем приступить к разбору шагов по переходу с ASP.NET MVC на ASP.NET Core, несколько слов о преимуществах этой платформы.


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

Как 17-летний парень портировал на компьютеры аркадный хит 80-х

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

6 часов, ноябрьское холодное утро 1987 года. 17-летний программист Мартин Уэбб сидит перед компьютером в каком-то доме в Шропшире. Отец Мартина, Дэннис Уэбб тоже здесь, как и Джефф Браун, руководитель компании-издателя игр US Gold. Они не спали всю ночь.

Прошлым вечером, за считанные минуты до начала создания десятков тысяч копий версии игры OutRun для Commodore 64 в студии Ablex Audio Video в Телфорде, которые должны были попасть на заманчивый рождественский рынок, один из тестеров сообщил о проблеме в процессе мастеринга. Где-то между кодом Мартина и загрузчиком turbo tape компании US Gold прятался баг. Им не удалось устранить ошибку на фабрике, поэтому они переместились в дом поблизости, чтобы Мартин мог сконцентрироваться на проблеме в тишине. Никто не говорил ни слова, но тинейджеру не нужно было напоминать, какая ставка на кону. OutRun была самой популярной аркадной игрой, и US Gold авансом заплатила Sega 250 000 фунтов, чтобы получить права на распространение игры для домашних компьютеров (самые дорогие лицензии обычно продавались за четверть от этой суммы). Были подписаны договоры, а реклама крутилась несколько месяцев. Наверно, на то время это был самый ожидаемый проект переноса игры с аркадных автоматов, а Мартин отвечал за создание самой важной версии для C64, которая будут продаваться по всему миру.
Читать дальше →
Всего голосов 61: ↑58 и ↓3+55
Комментарии12

Шпаргалка по аббревиатурам C++ и не только. Часть 1: C++

Время на прочтение20 мин
Количество просмотров55K
Когда-то я собеседовался на должность C++ разработчика в одну приличную и даже известную контору. Опыт у меня тогда уже кое-какой был, я даже назывался ведущим разработчиком у тогдашнего своего работодателя. Но на вопросы о том, знаком ли я такими вещами, как DRY, KISS, YAGNI, NIH, раз за разом мне приходилось отвечать «Нет».

Собеседование я с треском провалил, конечно. Но упомянутые аббревиатуры потом загуглил и запомнил. По мере чтения тематических статей и книг, подготовок к собеседованиям и просто общения с коллегами я узнавал больше новых вещей, забывал их, снова гуглил и разбирался. Пару месяцев назад кто-то из коллег небрежно упомянул в рабочем чате IIFE в контексте C++. Я, как тот дед в анекдоте, чуть с печки не свалился и опять полез в гугл.


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

Шпаргалка по аббревиатурам C++ и не только. Часть 2: «и не только»

Время на прочтение17 мин
Количество просмотров12K
Это вторая и последняя часть моей шпаргалки по аббревиатурам, которые стоит знать C++ разработчику. С++ здесь упомянут только потому, что шпаргалку я составил в первую очередь для себя, а я как раз-таки C++ разработчик.

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


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

2 лайфхака: альтернативы классическому поиску в Microsoft SQL Server

Время на прочтение12 мин
Количество просмотров19K
Привет, Хабр! Наши друзья из Softpoint подготовили интересную статью про Microsoft SQL Server. В ней разбирается два практических примера использования полнотекстового поиска:

  • Поиск по «бесконечным» строкам (напр., Комментарии) в противовес обычному поиску через LIKE;
  • Поиск по номерам документов с префиксами. Там, где обычно полнотекстовый поиск применять нельзя: ему мешают постоянные префиксы. Разбирается 2 подхода: предварительная обработка номера документа и добавление собственной библиотеки-word breaker’а.

Присоединяйтесь!

Читать дальше →
Всего голосов 14: ↑13 и ↓1+12
Комментарии13

Как приобщать детей к IT и как работать с ML в .NET: интервью с Дмитрием Сошниковым (Microsoft)

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


Многие дотнетчики знают Дмитрия shwars Сошникова (Microsoft) по его докладам, связанным с машинным обучением. А сейчас миры ML и .NET сближаются благодаря технологии ML.NET, так что очень пригодился бы новый доклад — и на DotNext он как раз будет (даже два, от Дмитрия и от Джеффа Просайза).

Но деятельность Дмитрия не ограничивается докладами — например, ещё он популяризует технологии разработки среди новичков, включая собственную дочь. И это не менее интересная тема: наверняка среди аудитории Хабра есть родители, которые думают, как правильнее приобщать детей к IT.

Поэтому в ожидании DotNext мы взяли интервью, где начали с биографии Дмитрия, потом подробно поговорили о детском IT-образовании — а в конце затронули машинное обучение и новые доклады о нём.
Читать дальше →
Всего голосов 29: ↑29 и ↓0+29
Комментарии0

Портирование WPF приложений на netcore 3.0

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

Ожидаемый релиз netcore 3.0 позволяет запускать wpf на netcore. Процедура перевода для одного несложного проекта занимает один-два дня. Каждый последующий — много быстрее.





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

I see you: тактика обхода маскировки добычи у летучих мышей

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


В мире дикой природы охотники и добыча постоянно играют в догонялки, как буквально, так и фигурально. Стоит охотнику развить новые навыки путем эволюции либо другими методами, как добыча подстраивается под них, дабы не быть съеденной. Это бесконечная игра в покер с постоянным повышением ставок, победитель который получает самый ценный приз — жизнь. Недавно мы с вами уже рассматривали механизм защиты мотыльков от летучих мышей, который основан на генерации ультразвуковых помех. Среди насекомых, являющихся деликатесом для крылатых эхолокаторов, маскировка своего ультразвукового сигнала это жизненно важное умение. Однако летучие мыши голодными оставаться не хотят, потому имеют в своем арсенале навык, позволяющий им видеть добычу несмотря на маскировку. Как именно летучие мыши косплеят Саурона, насколько их тактика охоты эффективна и как им в этом помогают листья растений? Об этом мы узнаем из доклада исследовательской группы. Поехали.
Всего голосов 35: ↑35 и ↓0+35
Комментарии10

В поисках вдохновения, или Как вытащить себя из Ж

Время на прочтение5 мин
Количество просмотров33K
После выхода моей первой статьи «Не бойтесь пробовать, или Как я стала программистом в возрасте далеко за 18», в личку и комментариях на Хабре, а также в соцсетях стали приходить самые разные отзывы. Один из них запомнился больше всего:

«Спасибо за Вашу статью. Очень грамотно написано. Но хотелось бы улучшить ее и дать обратную связь: вы пишете в позитиве “все закончилось хорошо”. Но куда важнее другой аспект “Как выбираться из трясины?”. Вы в статье упомянули, что был перерыв и то ли жаба, то ли любовь к программированию и т.д. и т.п. И побежали объяснять радостно дальше! А ведь сколько судеб ломается именно в этот момент. У каждого он свой. И кто-то банально не знает, как из него выбраться. Именно “как выбраться из ж...?” куда важнее чем “всё ли хорошо закончилось?”»

Я пообещала автору отзыва написать на эту совсем непростую тему.

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


Читать дальше →
Всего голосов 72: ↑60 и ↓12+48
Комментарии56

Курсоры БД в Doctrine

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

image


Используя курсоры, вы сможете порционно получить из БД и обработать большое количество данных, не расходуя при этом память приложения. Уверен, перед каждым веб-разработчиком хотя бы раз вставала подобная задача, передо мной тоже — и не раз. В этой статье я расскажу, в каких задачах курсоры могут быть полезны, и дам готовый код по работе с ними из PHP + Doctrine на примере PostrgeSQL.

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

Почему только прокачка кодинга не сделает из тебя лучшего разработчика

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


Techlead Skyeng Кирилл Роговой (flashhhh) выступает на конференциях с докладом, в котором рассказывает о навыках, развивать которые стоит каждому хорошему разработчику, чтобы стать лучшим. Я попросил его поделиться этой историей с читателями Хабры, передаю Кириллу слово.


Миф про хорошего разработчика гласит, что он:


  1. Пишет чистый код
  2. Знает много технологий
  3. Быстрее кодит задачи
  4. Знает кучу алгоритмов и шаблонов проектирования
  5. Умеет отрефакторить любой код по Clean Code
  6. Не тратит время на непрограммистские задачи
  7. 100% мастер своей любимой технологии

Так видят идеальных кандидатов HRы, и вакансии, соответственно, выглядят тоже так.


Но мой опыт говорит, что это не сильно соответствует действительности.

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

3D-принтер размером с комнату за 250 долларов

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

Почему бы не сделать из гаража или пустующей комнаты 3D-принтер? Опенсорсный проект из Швеции делает это возможным за 250 долларов. Кто меньше?
Всего голосов 26: ↑25 и ↓1+24
Комментарии30

Комикс «Паять просто» в обновлённом варианте (2019)

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

Всем добрый день. Одним далёким днём (летним или зимним уже и не упомнить) набрёл я на статью от atarity, где в красках (во всех смыслах) было рассказано о том, как легко и просто можно научиться паять (ссылку на комикс прилагаю).
Читать дальше →
Всего голосов 64: ↑62 и ↓2+60
Комментарии101

ML на Scala с улыбкой, для тех, кто не боится экспериментов

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


Всем привет! Сегодня будем говорить о реализации машинного обучения на Scala. Начну с объяснения, как мы докатились до такой жизни. Итак, наша команда долгое время использовала все возможности машинного обучения на Python. Это удобно, есть много полезных библиотек для подготовки данных, хорошая инфраструктура для разработки, я имею в виду Jupyter Notebook. Всё бы ничего, но столкнулись с проблемой распараллеливания вычислений в production, и решили использовать в проде Scala. Почему бы и нет, подумали мы, там есть куча библиотек, даже Apache Spark написан на Scala! При этом, сегодня модели мы разрабатываем на Python, а затем повторяем обучение на Scala для дальнейшей сериализации и использования в production. Но, как говорится, дьявол кроется в деталях.

Сразу хочу внести ясность, дорогой читатель, эта статья написана не с целью пошатнуть репутацию Python в вопросах машинного обучения. Нет, основная цель — приоткрыть дверь в мир машинного обучения на Scala, сделать небольшой обзор альтернативного подхода, вытекающего из нашего опыта, и рассказать, с какими трудностями мы столкнулись.
Читать дальше →
Всего голосов 20: ↑18 и ↓2+16
Комментарии4

JMAP — открытый протокол заменит IMAP при обмене электронными письмами

Время на прочтение4 мин
Количество просмотров8.3K
В начале месяца на Hacker News активно обсуждался протокол JMAP, разрабатываемый под руководством IETF. Мы решили поговорить о том, зачем он понадобился и как устроен.

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

Как сделать из сайта приложение и выложить его в Google Play за несколько часов. Часть 2/2: Trusted Web Activity

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

В первой части мы превратили наш сайт в Progressive Web App. Там же было сказано, что совсем недавно, 6 февраля 2019 года, Google предоставили простую возможность выкладывать PWA в Google Play при помощи Trusted Web Activity. Всё, что нужно сделать, это написать небольшую обёртку под Android, которую можно будет выложить в Google Play. Когда пользователь скачает такое приложение-обёртку, оно просто будет открывать наше PWA внутри Chrome. Конечно же, интерфейс Chrome будет спрятан и всё будет выглядеть красиво.

Если вы, как и я, никогда не писали приложений под Android, то дальнейшее вам тоже должно показаться чередой магических манипуляций. Но к чему только не прибегнешь, чтобы выложить своё приложение. Поехали!
Читать дальше →
Всего голосов 40: ↑40 и ↓0+40
Комментарии16

Смарт-карты. Часть 1. Принципы работы

Время на прочтение4 мин
Количество просмотров53K
Все мы пользуемся разными видами смарт-карт в повседневной жизни. Наиболее яркими примерами смарт-карт являются: SIM-карты, кредитные карты, электронные документы и т.д.

По сути, смарт-карта — это оптимизированный для криптографии микроконтроллер с повышенным уровнем безопасности. Что это означает? В отличие от стандартного микроконтроллера доступ к памяти смарт-карты строго контролируется процессором. Таким образом, чтение данных с карты их написание на ней регулируются ПО самой карты. Более того, производители чипов предпринимают меры по предотвращению несанкционированного доступа (копирования всей памяти, перепрограммирования) к карте на электронном и физическом уровне.
Читать дальше →
Всего голосов 16: ↑15 и ↓1+14
Комментарии5
1

Информация

В рейтинге
Не участвует
Откуда
Харьков, Харьковская обл., Украина
Дата рождения
Зарегистрирован
Активность