Pull to refresh
0
0
Александр @Kurochen

User

Send message

Сколько стоит разработка сайта с нуля в 2024 году?

Level of difficultyEasy
Reading time5 min
Views38K

Бизнес услуг может очень сильно разниться в стоимости: вы можете заказать сайт как за 100 000р., так и за несколько десятков миллионов. Давайте разберемся, в чем отличие дешевого сайта от дорогого и из чего сегодня формируется стоимость разработки с нуля.

Читать далее
Total votes 19: ↑16 and ↓3+17
Comments41

Нейронные сети на Javascript

Reading time7 min
Views166K
image
Идея для написания этой статьи возникла прошлым летом, когда я слушал доклад на конференции BigData по нейронным сетям. Лектор «посыпал» слушателей непривычными словечками «нейрон», «обучающая выборка», «тренировать модель»… «Ничего не понял — пора в менеджеры», — подумал я. Но недавно тема нейронных сетей все же коснулась моей работы и я решил на простом примере показать, как использовать этот инструмент на языке JavaScript.

Мы создадим нейронную сеть, с помощью которой будем распознавать ручное написание цифры от 0 до 9. Рабочий пример займет несколько строк. Код будет понятен даже тем программистам, которые не имели дело с нейронными сетями ранее. Как это все работает, можно будет посмотреть прямо в браузере.
Читать дальше →
Total votes 58: ↑54 and ↓4+50
Comments79

Умные программисты пишут STUPID-код

Level of difficultyEasy
Reading time9 min
Views53K
Умные программисты пишут STUPID-код, ведь они понимают, что неожиданно возникшая сложность может привести к провалу проекта.


▍ Страдание


На момент написания этой статьи на моих часах 21:30.

Этим утром я проснулся в хорошем, оптимистичном настроении, рассчитывая на прекрасный день, но теперь вымотан.

Я вымотан не физически, а, скорее, разочарован тем, что, несмотря на все имеющиеся у нас замечательные технологии, позволяющие писать наилучшее ПО, мы, как люди, профессионально пишущие код, по множеству причин склонны ценить больше сложность, а не простоту.
Читать дальше →
Total votes 62: ↑58 and ↓4+73
Comments77

Изучение data science c нуля: этапы и вехи

Reading time9 min
Views74K

В соответствии с концепцией спирального подхода к обучению, о которой писал ранее, привожу поэтапный план освоения data science. План составлен так, чтобы каждый этап делал учащегося в той или иной степени лучше подготовленным к выполнению реальных задач. Такой подход вдохновлен идеологией Agile в том смысле, что сколько бы времени вы не уделили обучению и в какой бы момент не остановились - у вас будет наиболее востребованный набор знаний, из возможных к освоению за такое время.

Читать далее
Total votes 8: ↑7 and ↓1+11
Comments12

Тиннитус (шум в ушах) для айтишников, геймеров, и не только

Reading time16 min
Views72K

ВНИМАНИЕ! Если у вас нет шума в ушах (тиннитуса) и/или нейросенсорной тугоухости, но есть особенности психики в части психосоматики или подобного – покиньте данный пост не читая.

Самые важные победы в мире – победы над собой

Всем привет. Меня зовут Паша Герасимов, мне 38, я – инженер в ИТ, геймер, и у меня диагноз НСТ (нейросенсорная тугоухость), а также субъективный шум в ухе (тиннитус) и гидропс правого лабиринта. По ощущениям, это комбо – шум/гул/свист в ухе, снижение слуха, чувство заложенности за перепонкой, и гиперакузия (повышенная чувствительность к некоторым звукам). Для тех, кто не в теме – представьте, что у вас ухо заложено ваткой, а внутри уха – звук неработающего канала ТВ (как видео пример, или mp3). И так – регулярно, месяцами, без возможности исправления.  

До 37 лет я практически не болел и не ходил по поликлиникам, это повлияло на всю историю с тиннитусом, поэтому для многих очевидные вещи, я понял на своей шкуре. 

Читать далее
Total votes 80: ↑78 and ↓2+91
Comments155

Сравнение производительности инструментов обхода блокировок\VPN

Reading time8 min
Views58K
По мере того, как нам все активнее закрывают доступ к различным ресурсам в сети, все актуальнее становится вопрос обхода блокировок, а значит все актуальнее становится вопрос «А как же быстрее обходить блокировки?».

Оставим тему эффективности, с точки зрения обхода DPI\вайтлистов\блеклистов для другого случая, и просто сравним производительность популярных инструментов обхода блокировок.

Внимание: В статье под спойлерами будет много картинок.
Читать дальше →
Total votes 34: ↑34 and ↓0+34
Comments59

Через тернии к позиции Middle React разработчика

Reading time6 min
Views6K

Привет, Хабр! 

С Вами Андрей - Middle React разработчик. Еще чуть более полутора лет назад не совсем понимал куда двигаться и как начать зарабатывать если, твое хобби - программирование. 

Читать далее
Total votes 7: ↑4 and ↓3+5
Comments4

Что нужно знать, перед тем как использовать Prisma у себя в проекте

Reading time8 min
Views7K

Привет, Хабр!

Основным языком разработки у нас, в TIMELESS, является TypeScript, как на frontend,  так и на backend.  Поэтому в рамках идеи типизации всего и вся для работы с БД мы выбрали Prisma, которая позиционирует себя как “Next generation ORM for Node.js and TypeScript”.

Спустя год применения Prisma хотелось бы поделиться опытом ее использования при работе с PostgreSQL из Node.js приложения.

Читать далее
Total votes 10: ↑10 and ↓0+10
Comments2

Ликбез по распространенным Client-Side уязвимостям

Level of difficultyMedium
Reading time15 min
Views17K


В этой статье мы покажем:


  • как в разных ситуациях манипулировать веб-сайтом таким образом, чтобы он передавал пользователям вредоносный JavaScript.
  • как скомпрометировать администратора сайта, отправив ему личное сообщение;
  • как атаковать разом всех пользователей при помощи комментария под статьей;
  • как заставить пользователя отправить запрос на действия, которые он не собирается выполнять;
  • как прослушивать WebSocket-соединения;
  • и коротко объясним, как предотвратить все эти безобразия.

В общем, под катом вас ждет рассказ про распространенные уязвимости на стороне клиента и некоторые методы Client-Side защиты.

Читать дальше →
Total votes 24: ↑24 and ↓0+24
Comments3

Как в 1.5 раза повысить производительность фронтенда высоконагруженного интернет-магазина на Next.js

Level of difficultyMedium
Reading time5 min
Views10K

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

Читать далее
Total votes 11: ↑10 and ↓1+11
Comments18

useCallback в цикле? Мемоизация коллбеков для компонентов в массиве

Level of difficultyEasy
Reading time12 min
Views3.7K

Приветствую, коллега! В нашей практике порой возникают ситуации, когда нужно создать список инпутов. Например, создаем инпут для фильтра по строкам. Должна быть возможность добавлять инпут, удалять существующие. Классические оптимизации тут не сработают, даже если будем использовать memo и useCallback, все равно все инпуты будут обновляться при каждом обновлении родителя. В этой статье разберем, как оптимизировать списки инптов, разберем 2 способа мемоизации колбеков, благодаря которым будет изменяться единственный инпут в массиве, а не все. Будем использование кеширование и паттерн event switch. Поехали!

Читать далее
Total votes 11: ↑9 and ↓2+9
Comments7

Способы хранения деревьев в реляционных базах данных c использованием ORM Hibernate

Level of difficultyMedium
Reading time33 min
Views36K

Здравствуйте! В этой статье, я постараюсь кратко рассказать о четырёх достаточно известных способах хранения деревьев с указанием преимуществ и недостатков. На идею написать подобную статью подтолкнул не раз слышимый мною вопрос: "А как это будет в Hibernate?", то есть как реализовать какой-либо из способов хранения дерева с использованием ORM Hibernate. Сразу замечу, что данная статья не является каким-либо призывом использовать именно реляционные БД для решения задач связанных с деревьями, так как понятно что реляционные базы не заточены конкретно для целей хранения\обработки таких данных. Для иерархии подходят и используются графовые базы данных. Поэтому эта статья будет полезная тем, кому необходимо по каким-либо причинам реализовать хранение дерева именно в реляционной БД. Необходимо также отметить, что и ORM Hibernate также не содержит каких-либо готовых решений из коробки для хранения\обработки деревьев по крайней мере на данный момент, поэтому реализация таких решений практически полностью ложиться на плечи разработчика. В примерах далее для полной и целостной картины, кроме сущностей(entity), рассмотрим кратко и такие базовые операции, как получение всех потомков с уровнем вложенности, получение всех родителей с уровнем вложенности, а также операции добавления, удаления и перемещения узла в дереве. В качестве примера дерева послужит структура папок на файловой системе, которая будет отражена в таблицах(е) БД. На такие моменты, как инициализация сущности(entity) не будем акцентировать внимание, полагаю что рассматривать это не имеет смысла, так как алгоритмы обхода дерева известны и описаны во многих книгах и публикациях и будут мало кому интересны. В любом случае мои реализации обхода дерева представлены на GitHub и с ними при желании можно ознакомиться.

Читать далее
Total votes 11: ↑11 and ↓0+11
Comments7

Как задачи на LeetCode прокачали меня как разработчика, или по-честному про алгоритмы

Level of difficultyEasy
Reading time7 min
Views59K

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

С тех пор у меня накопилось более 400 решённых задач на LeetCode. Теперь я уверена, что такие платформы как LeetCode, HackerRank или CodeWars, при правильном подходе, способны поднять профессиональные навыки любого разработчика на новый уровень.

Читать далее
Total votes 58: ↑50 and ↓8+64
Comments92

Не наступил ли у React момент переписывания Angular.js на Angular?

Level of difficultyMedium
Reading time9 min
Views14K

В 2012 году Angular.js серьёзно поменял frontend-разработку. Фреймворку от Google тогда очень быстро удалось снискать популярность у разработчиков.

И вот уже буквально через два года его разработчики решили объявить о выходе новой версии под именем Angular 2. Версия оказалось написанной полностью с нуля и не имела совместимости с предыдущей даже близко. Большинство разработчиков, не исключая и вашего покорного слугу, идея переписывать их приложения явно не прильщала. Писать приложения на старой версии, которая с припиской JS, тоже было так себе вариантом. Конкурирующие фреймворки уже были ничуть не хуже.

Одним из них мы и воспользовались, переведя в 2015 году нашу фронтенд-разработку на React. У него была простая архитектура, основанная на компонeнтном подходе и рассчитанная на то, чтобы не терять в производительности труда с ростом кодовой базы.

Сообщество Реакта с тех пор значительно выросло и вот недавно команды React и Next.js показали нам Server Components, новый способ разработки веб-приложений, который со стандартным React-приложением совместим примерно никак.

Это такое же серьёзное изменение как и переход с Angular.js на Angular 2? React сейчас проходит через ту же фазу, что и Angular.js когда-то?

Замечание: В этой статье я буду обсуждать фичи как от команды React так и от Next.js. Работают они сейчас очень тесно, так что зачастую трудно сказать, кто из них за что ответственен. Так что буду писать просто, "React" имея в виду обе команды.

Читать далее
Total votes 17: ↑17 and ↓0+17
Comments24

Внезапно сложная задача на литкоде: Варианты покупки двух товаров

Level of difficultyHard
Reading time6 min
Views13K

Есть вот такая, вроде бы, простая задача на литкоде: Дано три числа total - сколько у вас есть денег, cost1, cost2 - цены двух товаров. Надо подсчитать, сколько всего существует различных способов купить сколько-то этих двух товаров, не выходя из бюджета (значение имеет только общее количество покупок). Иными словами, сколько существет целых неотрицательных пар (x, y), таких что x*cost1+y*cost2 <= total . Например, имея товары ценами {5, 10} и 20 денег на руках, есть 9 способов потратить деньги: 0, 5, 5+5, 5+5+5, 5+5+5+5, 10, 10+5, 10+5+5, 10+10.

Она там даже помечена как medium и вообще в одну строчку решается, но это если допускать безумно медленное решение за O(total / max(cost1, cost2)) , т.е линейное от входных чисел. А сможете ли вы решить ее сильно быстрее - за O(log(max(cost1, cost2))) ? В этом случае задачка становится вполне себе hard и требует много математики и аккуратности. Если интересно решение - добро пожаловать под кат. Буду рад любым альтернативным решениям. Может кто-то сможет додуматься до похожего решения проще.

Читать далее
Total votes 23: ↑18 and ↓5+18
Comments49

Пишем хорошие компоненты, которые захочется переиспользовать, а плохие — не пишем

Reading time9 min
Views14K

Обсудили с Антоном Крыловым, фронтенд-разработчиком Авито, как нужно и не нужно писать компоненты. Поговорили про характеристики компонентов и коснулись Dependency Injection и DSL-like подхода в React.

Читать далее
Total votes 11: ↑9 and ↓2+8
Comments8

Prisma — как подключить в Nest-проекте

Reading time5 min
Views5.5K

## Prisma - установка в проект

Установка поддержки Prisma в NestJS-проекте выполняется очень просто - при помощи двух команд.

Первая - устанавливает клиентскую часть Prisma:

$ npm i @prisma/client

... вторая команда - устанавливает cli-часть Prisma:

$ npm i -D prisma

После этого - нужно запустить команду для инициализации Prisma в текущем проекте:

$ npx prisma init

В результате в корне проекта будет создана папка prisma, внутри которой будет находиться файл schema.prisma для настройки подключения Prisma к базе данных (и не только).

Содержимое файла schema.prisma очень простое:

Читать далее
Total votes 2: ↑1 and ↓10
Comments0

PrestaShop: обзор и возможности платформы

Level of difficultyEasy
Reading time16 min
Views8.9K

В прошлом материале я протестировал движок с открытым исходным кодом для создания интернет-магазина OpenCart, и по ряду причин он показался мне не слишком удобным. Для версии 4 пока еще доступно не слишком много плагинов и шаблонов оформления, а те, что есть, далеко не всегда стабильно работают “из коробки”. Поэтому я решил установить на своем сервере и протестировать еще одно бесплатное решение - PrestaShop версии 1.7.8.7. Впечатлениями и субъективным мнением о знакомстве с этой CMS я делюсь с вами.

Читать далее
Total votes 15: ↑15 and ↓0+15
Comments2

Зарплатные вилки весной 2023: языки программирования и фреймворки

Reading time15 min
Views131K

Мы на Хабр Карьере регулярно анализируем зарплаты IT-специалистов: по полугодиям, в разрезе специализаций, квалификаций, городов, компаний, языков программирования и т.д. В этом году мы решили попробовать собрать новый срез и посмотреть на зарплатный рынок со стороны работодателя.

Проанализировали все вакансии, а потом посмотрели предложения только для разработчиков на Хабр Карьере и разобрались, какие языки и фреймворки были популярны этой весной и какие зарплатные вилки предлагали в них работодатели.

Читать далее
Total votes 35: ↑33 and ↓2+50
Comments80

Совпадение? Не думаю

Level of difficultyEasy
Reading time13 min
Views21K

Представьте себе колоду из 52 карт. Загадайте любую, я дам вам пару секунд. Дайте угадать. Ваша карта: туз червей. Большинство из вас ответило: нет. Но если 1000 человек прочитавших статью решила мне подыграть, и если все карты выбираются с одинаковой вероятностью, то около 19 человек были удивлены: как он это сделал? Невероятно? Или очень даже вероятно, ведь это чистая математика. Однако мы допустили, что люди загадывают все карты одинаково часто, но это не так. Исследования показывают, что некоторые карты люди загадывают гораздо чаще (Например, туз червей, даму червей и туз пик). И это уже психология, а не математика.

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

Проявить любопытство
Total votes 60: ↑57 and ↓3+68
Comments53

Information

Rating
Does not participate
Location
Новосибирск, Новосибирская обл., Россия
Date of birth
Registered
Activity