Pull to refresh
89
0
Dolovar @dolovar

SE

Send message

Go: обобщенные алгоритмы и типы

Reading time10 min
Views10K

До недавнего времени у тех, кто пишет на Go было два пути: копипаста и кодогенерация. Фанатом ни первого, ни второго я не являюсь, однако к моей радости, теперь и в Go есть обобщенные типы. Казалось бы, проблема решена! Но не тут-то было, дженерики Go имеют весьма специфические ограничения, которые, портят всю малину. С одним из них мне и захотелось разобраться.

Читать далее
Total votes 13: ↑8 and ↓5+4
Comments6

Работа с Веб-сокетами на PHP

Reading time3 min
Views15K

PHP - едва ли первое, что придет в голову, когда стоит задача поднять сервер веб-сокетов. Практически каждая статья в интернете будет пестрить предложениями использовать для этого NodeJS, Python или Go. Но поскольку PHP - это однозначно первое, что приходит в голову, когда речь идет о веб-приложениях, почему бы не попробовать?

На самом деле, запуск сервера веб-сокетов на PHP довольно прост. Существует превосходная библиотека Ratchet, позволяющая работать на любом фреймворке (или вовсе без него) полноценно и легко.

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

Читать далее
Total votes 16: ↑9 and ↓7+3
Comments20

Особенности типов данных и преобразования в JavaScript

Reading time9 min
Views26K

На первый взгляд тема типов данных и преобразований может показаться легкой.

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

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

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

Что такое состояние

Reading time13 min
Views19K


Привет! Меня зовут Артём Арутюнян, много где меня можно встретить под ником artalar. 10 лет я разрабатываю крупные веб-сервисы, и вот уже четыре года менеджер состояния, исследуя тему реактивности, консистентности данных и состояния. А началось всё с простого вопроса: почему React, самая популярная современная библиотека для написания UI, по умолчанию полностью рушит приложение и показывает белый экран при появлении ошибки в любом компоненте во время рендера?

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

Примеров будет немного, т. к. их достаточное описание превратило бы статью в небольшую книжку. Но надеюсь, что сами идеи всё же будут понятны.
Читать дальше →
Total votes 37: ↑35 and ↓2+50
Comments2

Брендан Эйх о создании JavaScript за 10 дней и о том, что сегодня он сделал бы по-другому

Reading time6 min
Views14K

Миллионы современных разработчиков активно используют язык программирования, который родился буквально за 10 дней в период экспоненциального развития интернета. Создатель JavaScript Брендан Эйх не так давно заново обратился к истокам созданного им языка и рассказал о том, как семена, посеянные им в 1995 году, теперь наконец-то взошли.

Читать далее
Total votes 31: ↑30 and ↓1+36
Comments9

Как работают this, call, apply и bind в Java Script: разбираемся на примерах

Reading time3 min
Views28K

Привет, Хабр! Эту статью написал Тарас Голомозый, fullstack web-разработчик и преподаватель в школе программирования Эльбрус Буткемп. В своей практике он часто сталкивается с кейсами выпускников, которых на собеседовании просят рассказать о роли ключевого слова this в JavaScript. Простого определения про ссылку на контекст часто оказывается недостаточно, требуется более глубокое погружение в тему. В этой статье он на нескольких примерах разбирает, в каких ситуациях может пригодиться это ключевое слово и как используется call, apply и bind.

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

Объяснение паттерна Наблюдатель на примере Redux

Reading time6 min
Views9.3K

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

Казалось бы, что может избавить нас от мучительной рутины связанной с отслеживанием зависимостей? Есть один паттерн, который нам с этим поможет, и имя ему Наблюдатель. Давайте посмотрим как он реализуется в знакомой библиотеке менеджера состояний Redux.

Читать далее
Total votes 7: ↑6 and ↓1+6
Comments10

Как я тоже Понг на JS делал

Reading time30 min
Views9.4K

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

Хочу знать больше
Total votes 17: ↑17 and ↓0+17
Comments12

Где скачать научную статью легко и доступно?

Reading time1 min
Views87K

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

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

Здесь собраны совершенно бесплатные ресурсы, где вы можете найти интересующую Вас научную статью.

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

Система типов — лучший друг программиста

Reading time8 min
Views32K

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

Значение в string не лучший тип для записи адреса электронной почты или страны проживания пользователя. Эти значения заслуживают гораздо более богатых и специализированных типов. Мне нужно, чтобы существовал тип данных EmailAddress, который не может быть null. Мне нужна единая точка входа для создания нового объекта этого типа. Он должен валидироваться и нормализироваться перед возвратом нового значения. Мне нужно, чтобы этот тип данных имел полезные методы наподобие .Domain() или .NonAliasValue(), которые бы возвращали для введённого foo+bar@gmail.com значения gmail.com и foo@gmail.com. Эта полезная функциональность должна быть встроена в эти типы. Это обеспечивает безопасность, помогает предотвращать баги и существенно повышает удобство поддержки.
Читать дальше →
Total votes 102: ↑100 and ↓2+116
Comments90

Где искать баги фаззингом и откуда вообще появился этот метод

Reading time8 min
Views6.9K
Подход фаззинг-тестирования родился еще в 80-х годах прошлого века. В некоторых языках он используется давно и плодотворно — соответственно, уже успел занять свою нишу. Сторонние фаззеры для Go были доступны и ранее, но в Go 1.18 появился стандартный. Мы в «Лаборатории Касперского» уже успели его пощупать и тестируем с его помощью довольно большой самостоятельный сервис.



Меня зовут Владимир Романько, я — Development Team Lead, и именно моя команда фаззит баги на Go. В этой статье я расскажу про историю фаззинга, про то, где и как искать баги, а также как помочь фаззинг-тестам эффективнее находить их в самых неожиданных местах. И покажу этот подход на примере обнаружения SQL-инъекций.
Читать дальше →
Total votes 15: ↑13 and ↓2+17
Comments3

Анатомия ошибки в JavaScript

Reading time7 min
Views11K
image

Автоматически генерируемые ошибки JavaScript – почему они происходят


Первый шаг к пониманию ошибок JavaScript – разобраться, откуда они берутся. Большинство ошибок JavaScript, встречающихся в природе, автоматически генерируются самим движком JavaScript. Существует множество типов ошибок, но, как правило, все они относятся к одному из трех классов.
Читать дальше →
Total votes 12: ↑11 and ↓1+13
Comments11

Дженерики в Go: когда нужны и когда можно без них

Reading time14 min
Views13K

Много раз при обсуждении преимуществ и прелестей Go, как языка разработки, мне приходилось слышать что-то вроде «у вас даже нет дженериков» или «вот завезут дженерики, тогда и поговорим». Так вот, дженерики завезли, давайте посмотрим что из этого вышло. 

Меня зовут Павел Грязнов. Я уже несколько лет пишу на Go в прод, хотя знакомство с языком начал с самых ранних версий. Видел как Garbage Collector мог сделать stop the world на пару секунд, страдал от отсутствия системы зависимостей и других проблем. В этой статье я расскажу о дженериках в Go. Начнём с самых основ, продолжим более продвинутыми примерами и закончим бенчмарками.

Чтобы лучше показать работу дженериков на контрасте, я сравню примеры их использования на двух языках — Python и Go. C Python последний раз работал слишком давно, поэтому вторую часть доклада мне помогли сделать коллеги из Evrone. Пойдем по порядку: разберем, для чего нужны дженерики и какие задачи они решают. Посмотрим, как выглядит мир без дженериков, на их синтаксис, ограничения, бенчмарки и немного затронем функциональное программирование.

Читать далее
Total votes 22: ↑21 and ↓1+26
Comments13

MySQL и MongoDB — когда и что лучше использовать

Reading time13 min
Views256K


Петр Зайцев показывает разницу между MySQL и MongoDB. Это — расшифровка доклада с Highload++ 2016.

Если посмотреть такой известный DB-Engines Ranking, то можно увидеть, что в течении многих лет популярность open source баз данных растет, а коммерческих — постепенно снижается.
Total votes 42: ↑35 and ↓7+28
Comments87

Пошаговая боевая система на примере JS

Reading time7 min
Views10K

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

Кто заинтересован - добро пожаловать под кат.

Идти под кат
Total votes 11: ↑8 and ↓3+8
Comments8

Service Locator — антипаттерн

Reading time6 min
Views23K

Service Locator (или “локатор служб”) — хорошо всем нам известный паттерн. Поскольку он был описан Мартином Фаулером, он должен быть хорошим, ведь так?

К сожалению нет, на практике это классический пример антипаттерна, который следует избегать.

Давайте разберемся, что с ним не так. Если отвечать коротко, то проблема с Service Locator заключается в том, что он скрывает зависимости класса, что вызывает ошибки времени выполнения вместо ошибок времени компиляции, а также усложняет сопровождение кода, потому что становится не совсем ясно, какие изменения окажутся критическими.

Читать далее
Total votes 17: ↑9 and ↓8+1
Comments17

Как работать с секретами в Golang, чтобы минимизировать хаос

Reading time11 min
Views5.8K

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

Меня зовут Сергей Киммель, я PHP Developer, Golang Developer и руководитель отдела разработки торгового движка. Сегодня поделюсь опытом своей команды в работе с секретами. Расскажу о проблемах, с которыми мы столкнулись, и об их решении. Дам варианты организации работы с секретами и покажу пример организации Golang-кода.

Читать далее
Total votes 12: ↑9 and ↓3+6
Comments3

Покажи мне свой Git, и я скажу, кто ты

Reading time15 min
Views37K

Можно ли с помощью GitHub анализировать работу, не заглядывая в монитор сотрудника — без скриншотов и тайм-трекеров?

Я Александр Кириллов, технический директор компании Evrone. Больше 20 лет я посвятил разработке. В этой статье поделюсь с вами опытом, который собрал за время работы с распределенными командами. Расскажу о том, как, не нарушая приватность разработчиков, следить за качеством работы на проектах и отслеживать нежелательные паттерны с помощью метрик в Jira и Git.

Читать далее
Total votes 63: ↑53 and ↓10+53
Comments26

Information

Rating
Does not participate
Registered
Activity