Как стать автором
Обновить
156
0.2
Алексей Гришин @GRaAL

Разработчик широкого профиля

Краткое руководство по работе с данными с помощью Miller

Время на прочтение 3 мин
Количество просмотров 2.6K
Блог компании Timeweb Cloud Программирование *Data Engineering *
Обзор
Перевод


Привет, друзья!


Представляю вашему вниманию перевод этой замечательной статьи, в которой рассказывается о Miller — автономном, легковесном и мощном интерфейсе командной строки (Command Line Interface, CLI) для работы с данными в форматах CSV, JSON и некоторых других.


Интересно? Тогда прошу под кат.

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

Сезон Java всё: итоги и самые полезные статьи

Время на прочтение 6 мин
Количество просмотров 24K
Блог компании Сбер Habr Java *
☕️ Cезон Java
Мегапроект

С 1 июля по 15 августа наш любимый ресурс временно захватили джависты. Развлекались они, а разгребать 46 хардкорных технических текстов нам, читателям Хабра.

Или нет: я (@apoltavcev) попросил участников сезона Java выбрать лучшие статьи. Под катом вас ждут краткие итоги конкурса и посты, которые настоятельно рекомендуются к прочтению.

А если вы пишете не про Java, а на Java — посмотрите вакансии Сбера. Они проспонсировали нашу Java-вечеринку, за что им большое спасибо.

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

Как я реализовывал switch exhaustiveness checker для Java 8

Время на прочтение 8 мин
Количество просмотров 3.3K
Программирование *Java *Компиляторы *Промышленное программирование *
☕️ Cезон Java
В последние время многие промышленные языки вроде C#, Kotlin и Java стали реализовывать switch exhaustiveness проверки для разных языковых элементов: sealed classes, records и enums. Я могу предположить, что это связано с популяризацией Data Oriented Programming. К сожалению, я пока привязан к Java 11, где эта функциональность компилятором не реализована. Поэтому, я решил сделать что-нибудь, что будет проверять switch exhaustiveness для Enums и будет работать на Java 8 и выше.

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

It is Wednesday, my java dudes, или насколько сложно сделать свою JVM

Время на прочтение 11 мин
Количество просмотров 10K
Ненормальное программирование *Java *Rust *
☕️ Cезон Java
✏️ Технотекст 2022

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

Конечно же вырабатывать дофамин через решение упоротых инженерных задач!

Мне стало интересно - насколько тяжко было бы сделать свой интерпретатор байт-кода Java? И насколько сложно было бы научить его “новым трюкам”?

Писать я буду на Rust, поэтому и проект, не мудрствуя лукаво, назвал Rjava.

Читать далее
Всего голосов 67: ↑66 и ↓1 +65
Комментарии 26

Выбираем лучший текстовый редактор для поиска логов

Время на прочтение 4 мин
Количество просмотров 8.8K
DevOps *Софт

Логов становится все больше и больше, а времени на их анализ и поиск всё меньше. Мне стало интересно, а есть ли разница в скорости и производительности популярных программ при работе с большими объемами текста. Оказывается есть! Будем сравнивать Notepad, Notepad++, TextPad и Atom в скорости поиска текста в лог-файлах.

Читать далее
Всего голосов 17: ↑11 и ↓6 +5
Комментарии 82

9 упражнений для тех, кто весь день за компом

Время на прочтение 4 мин
Количество просмотров 37K
Блог компании AGIMA Здоровье

Эта статья посвящается всем разработчикам, тестировщикам, маркетологам и проджект-менеджерам, которые по 8 часов в день сидят за компьютером без движения. Наша работа — это монитор, мышка, клавиатура и не всегда удобное кресло. Здоровье от такой жизни страдает, зрение падает, а спина болит. С этим явно нужно что-то делать. Обычно в этом блоге мы рассказываем о разработке — но в этот раз сделаем исключение. Поговорим о том, как сохранить здоровье.

Читать далее
Всего голосов 71: ↑67 и ↓4 +63
Комментарии 27

Пишем на Rust расширение для SQLite, чтобы научить его работать с файлами Excel

Время на прочтение 11 мин
Количество просмотров 5.7K
SQL *C *SQLite *Rust *
Туториал
Перевод

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

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

Исходный код на GitHub

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

Моделирование базы данных в Neo4j

Время на прочтение 4 мин
Количество просмотров 4K
Проектирование и рефакторинг *Администрирование баз данных *

Моделирование базы данных в графовых БД существенно отличается от реляционных. В этой статье я расскажу о best practices, тонкостях и нюансах моделирования данных в Neo4j.

Читать далее
Всего голосов 11: ↑10 и ↓1 +9
Комментарии 5

Обработка исключений в Java в функциональном стиле

Время на прочтение 4 мин
Количество просмотров 21K
Open source *Программирование *Java *Функциональное программирование *
Из песочницы
☕️ Cезон Java

В данной статье автор предоставит информацию о собственной библиотеке для обработки исключений (Exception) в функциональном стиле.

Предпосылки

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

Читать далее
Всего голосов 40: ↑37 и ↓3 +34
Комментарии 31

Мой опыт использования LiteDB

Время на прочтение 8 мин
Количество просмотров 7.2K
.NET *
Перевод

Недавно я искал систему хранения для моей программы. Она представляет собой desktop-приложение, которому нужно хранить множество объектов и осуществлять поиск текста в них. И я подумал: "Почему бы не попробовать что-то новое". Вместо SQL базы данных типа SqLite я мог бы использовать документную базу данных. Но мне хотелось бы, чтобы для неё не требовался отдельный сервер, чтобы она работала с простым файлом. Поиск в Интернет подобных систем для .NET приложений быстро вывел меня на LiteDB. Здесь я хочу поделиться тем, что я нашёл в процессе работы с этой базой данных.

Читать далее
Всего голосов 9: ↑8 и ↓1 +7
Комментарии 23

Алматы — город, который захватили урбанисты (почти)

Время на прочтение 14 мин
Количество просмотров 13K
IT-эмиграция

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

В мае я отправился в страну степей, чтобы посмотреть на самый процветающий здесь город - Алматы. В этой статье я расскажу, как живется в культурной столице; как часто вы будете здесь видеть языковые патрули; что из себя сейчас представляют правительственные здания, сожженные в январе; и, самое главное, как все-таки правильно: Алматы или Алма-Ата?

Читать далее
Всего голосов 36: ↑35 и ↓1 +34
Комментарии 43

JIT-компилятор Python в 300 строк

Время на прочтение 11 мин
Количество просмотров 25K
Python *Программирование *C++ *Компиляторы *

Может ли студент второго курса написать JIT - компилятор Питона, конкурирующий по производительности с промышленным решением? С учётом того, что он это сделает за две недели за зачёт по программированию.

Как оказалось, может, но с нюансами.

Читать далее
Всего голосов 138: ↑137 и ↓1 +136
Комментарии 36

Искусственный интеллект в DOOM

Время на прочтение 11 мин
Количество просмотров 38K
Блог компании Lightmap Разработка игр *Дизайн игр *Искусственный интеллект Игры и игровые консоли
Перевод

DOOM — прародитель шутеров от первого лица, определивший целое поколение игр 90-х. Хоть это и не первая игра такого рода, и даже не первая игра id Software, но именно она изменила индустрию. Проект до сих пор изучают не только из-за его известности, но и потому, что он достиг высот в условиях сильных технических ограничений, задолго до появления большинства современных инструментов и стандартов. Под катом перевод статьи о работе искусственного интеллекта в Doom и трюках, которые использовали разработчики для создания интересных боевых ситуаций.

Читать далее
Всего голосов 122: ↑120 и ↓2 +118
Комментарии 23

Прокачиваем kotlin: используем AST лямбд в рантайме

Время на прочтение 18 мин
Количество просмотров 2.7K
Ненормальное программирование *Java *Компиляторы *Kotlin *

История о том, как сделать свой LINQ для kotlin, и как сделать так, чтобы кода вида

data.filter { it.age > 30}.map { it.name }.toList()

мог и выполняться для данных в памяти, и превращаться в SQL запрос для базы данных.

Читать далее
Всего голосов 17: ↑17 и ↓0 +17
Комментарии 3

Ускоряем java-рефлексию в 2022

Время на прочтение 11 мин
Количество просмотров 9.5K
Java *
Из песочницы

После прочтения заголовка у среднестатистического читателя наверняка возникнет весьма логичный вопрос: «Кто такая эта ваша рефлексия и зачем её ускорять?»

И если первая часть будет волновать только совсем уж откровенных неофитов (ответ тут), то вторая точно нуждается в пояснении.

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

Однако в java рефлексия реализована не самым быстрым (зато надёжным) методом, а именно, через использование JNI-вызовов. JNI (Java Native Interface) – очень полезная штука, позволяющая машине вызывать код из «внешнего мира», библиотек, написанных на C/C++ или ассемблере.

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

Тем не менее, рефлексия работает именно так: машина «выходит наружу», копается в своих внутренностях и «возвращается обратно», доставляя пользователю полученную информацию или вызывая методы/конструкторы.

А теперь представьте примерное быстродействие какого-нибудь фреймворка, который в процессе работы постоянно осуществляет рефлективные вызовы…

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

Как написать калькулятор на HTML и CSS без JavaScript

Время на прочтение 5 мин
Количество просмотров 22K
Блог компании SkillFactory Ненормальное программирование *CSS *HTML *
Перевод

Материалом о разработке калькулятора на CSS и HTML, без файла JS, тега script и обработчиков событий в HTML делимся к старту курса по Fullstack-разработке на Python. За подробностями приглашаем под кат.

Читать далее
Всего голосов 33: ↑29 и ↓4 +25
Комментарии 9

Программисты как дети

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


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

Между делом она обозначила, что воспитательные приёмы – а детей мы тоже затронули (в целом – своих нет) – это не что иное как манипуляция. А раз так, то и со взрослыми есть некоторая градация допустимости «грязных трюков». 

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

Читать далее
Всего голосов 28: ↑24 и ↓4 +20
Комментарии 39

Краткий обзор Казахстана и личные воспоминания

Время на прочтение 17 мин
Количество просмотров 25K
IT-эмиграция Карьера в IT-индустрии Социальные сети и сообщества
Кейс

Поскольку сейчас у многих стоит вопрос - а куда бы отправиться? - я могу немного рассказать о Казахстане, в котором мне довелось пожить и поработать. Заранее прошу простить, если я где-то буду субъективным, но что поделать - это не сухой пошаговый мануал, это еще и личный опыт. Также, что-то могло устареть. А лететь или не лететь - решать вам (наземные погранпереходы закрыты, если у вас нет уважительной причины, из-за ковида).

Алга
Всего голосов 55: ↑51 и ↓4 +47
Комментарии 47

Инструкция для тех, кто решил что уже пора

Время на прочтение 10 мин
Количество просмотров 179K
IT-эмиграция

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

Начнем с плохих новостей. Да, на свете есть страны, в которых обсуждается тема "Зайцы охренели до такой степени, что жрут корм, оставленный для птиц" и все ждут выступление президента по этому поводу, потому что это самая серьезная проблема в стране. Но если мысль понаехать туда у тебя появилась только на прошлой неделе — это значит ты не занимался подготовкой предыдущие два года и, сори, тебе нужно заниматься подготовкой следующие два года. Может показаться что два года — это слишком и "мне то нужно завтра, какие два года". Но тут история такая: к началу текущей спецоперации ты уже не успел. У тебя есть шанс успеть к началу следующей. Воспользуешься ты им или нет - зависит только от тебя.

Опять же, я понимаю, что кто-то закончил языковую школу и при выступлении британской королевы подмечает стилистические ошибки ее английского, а кто-то консультировал Оракл при разработке HashMap и для них переезд — это вопрос желания, а не возможности. Но я говорю о неком "среднестатистическом случае", когда инглиш не флюент, а за плечами нет 10 лет опыта в аду.

В целом, до того, как начинать читать статьи "какие документы нужны для переезда в Швейцарию" у тебя, будущий ауслэндер, должны присутствовать четыре ключевых фактора успеха

Читать далее
Всего голосов 192: ↑169 и ↓23 +146
Комментарии 452

Скриптинг без скриптинга

Время на прочтение 7 мин
Количество просмотров 5.1K
Ненормальное программирование *Python *Программирование *Компиляторы *
Перевод

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

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

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

Читать далее
Всего голосов 11: ↑8 и ↓3 +5
Комментарии 12

Информация

В рейтинге
1 819-й
Откуда
Алматы (Алма-Ата), Алма-Атинская обл., Казахстан
Зарегистрирован
Активность

Специализация

Backend Developer, Software Architect
Lead
От 5 000 $