Pull to refresh
1
0
Дмитрий Жильцов @zaabjuda

User

Send message

Проект wideNES — выходим за границы экрана NES

Reading time13 min
Views19K
image

В середине 1980-х Nintendo Entertainment System (NES) была обязательной к покупке консолью. Лучший звук, лучшая графика и лучшие игры среди всех консолей того времени — приставка расширяла границы возможного. До сих пор такие проекты, как Super Mario Bros., The Legend of Zelda и Metroid считаются одними из лучших игр всех времён.

Прошло более 30 лет после выпуска NES, а классические игры чувствуют себя прекрасно, чего нельзя сказать о железе, на котором они работали. Имея разрешение всего 256x240, консоль NES не могла предоставить играм достаточно пространства. Тем не менее, бесстрашным разработчикам удалось уместить в играх NES потрясающие, незабываемые миры: лабиринтоподобные подземелья The Legend of Zelda, обширные пространства планеты в Metroid, яркие уровни Super Mario Bros.. Однако из-за аппаратных ограничений NES игроки никогда не могли выйти за пределы разрешения 256x240…

До недавнего времени.

Представляю вашему вниманию проект wideNES — новый способ сыграть в классику NES!
Читать дальше →
Total votes 90: ↑90 and ↓0+90
Comments15

Разработка веб-приложения на Rust

Reading time11 min
Views33K
Автор материала, перевод которого мы сегодня публикуем, говорит, что его самым свежим экспериментом в области архитектуры программных проектов стало создание рабочего веб-приложения с использованием исключительно языка Rust и с минимально возможным применением шаблонного кода. В этом материале он хочет поделиться с читателями тем, что он выяснил, разрабатывая приложение и отвечая на вопрос о том, готов ли уже Rust к применению его в различных сферах веб-разработки.


Читать дальше →
Total votes 58: ↑56 and ↓2+54
Comments12

Руководство: как использовать Python для алгоритмической торговли на бирже. Часть 1

Reading time8 min
Views87K


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

Среди наиболее популярных в сфере финансов языков программирования можно отметить R и Python, также часто используются C++, C# и Java. В опубликованном на сайте DataCamp руководстве речь идет о том, как начать использовать Python для создания финансовых приложений — мы представляем вам серию статей-адаптаций глав этого материала.
Читать дальше →
Total votes 18: ↑18 and ↓0+18
Comments4

Программируем в мире Minecraft

Reading time9 min
Views66K
Хабр, привет! Пока все обсуждают ИИ в мире Pacman, мы начнем делать свой ИИ в Minecraft с фреймворком Malmo от Microsoft Research. Pacman у нас тоже появится. Если вы любите кубический мир, или вам хотелось бы начать изучать искусственный интеллект, или у вас есть дети, с которыми вы не можете найти общие увлечения, или же вас просто заинтересовала тема – прошу под кат.


Читать дальше →
Total votes 38: ↑35 and ↓3+32
Comments15

Обработка ошибок в Rust

Reading time32 min
Views40K

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



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



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


Читать дальше →
Total votes 37: ↑36 and ↓1+35
Comments73

Пятничный пост: opensource CRM уходящего года

Reading time9 min
Views46K


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

А раз уж все равно выбирать — почему бы не написать об этом?
Читать дальше →
Total votes 23: ↑17 and ↓6+11
Comments38

Дерево ван Эмде Боаса

Reading time6 min
Views18K
Всем доброго времени суток!

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

Дерево ван Эмде Боаса (van Emde Boas tree) — ассоциативный массив, который позволяет хранить целые числа в диапазоне [0; U), где U = 2k, проще говоря, числа, состоящие не более чем из k бит. Казалось бы, зачем нужно еще какое-то дерево, да еще позволяющее хранить только целые числа, когда существует множество различных сбалансриованных двоичных деревьев поиска, позволяющих выполнять операции вставки, удаления и прочие за O(log n), где n — количество элементов в дереве?

Главная особенность этой структуры — выполнение всех операций за время O(log(log(U))) независимо от количества хранящихся в ней элементов.

Что же там еще есть такого вкусного?
Total votes 193: ↑191 and ↓2+189
Comments39

Миллион строк в секунду из Postgres с помощью Python

Reading time4 min
Views52K
image

asyncpg — новая Python open-source библиотека для работы с PostgreSQL. Она была написана с использованием asyncio и Python 3.5. asyncpg — самый быстрый драйвер для работы с PostgreSQL среди похожих реализаций на Python, NodeJS и Go.

Почему asyncpg?


Мы создаем EdgeDB — базу данных нового поколения, с PostgreSQL на бэкенде. Нам необходима высокая производительность, низкая задержка доступа и дополнительные возможности самого PostgreSQL.

Самый очевидный вариант – использовать psycopg2 — популярнейший драйвер Python для работы с PostgreSQL. У него отличное комьюнити, он стабильный и проверенный временем. Также есть aiopg, который реализует асинхронный интерфейс, поверх psycopg2. Тогда очевиден вопрос — зачем писать свой велосипед? Короткий ответ: производительность и поддержка возможностей PostgreSQL. Ниже мы рассмотрим это более детально.
Читать дальше →
Total votes 37: ↑37 and ↓0+37
Comments12

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

Reading time7 min
Views15K

Источник

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

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

Инструмент построения карьеры и продвижения личного бренда называется «коммуникационная стратегия» и ниже рассказывается о том, как он может быть применен в сфере IT для профессионального и личностного роста.

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

Каким образом представить и подать себя как специалиста (или «вольного» консультанта), о котором мечтает любая компания? Очевидно, что, как и для любой непростой задачи, решение должно быть комплексным.
Читать дальше →
Total votes 16: ↑12 and ↓4+8
Comments5

Введение в DSL. Часть 1 — Проблематика проектирования и кодирования

Reading time7 min
Views29K
На протяжении нескольких десятилетий стоит задача поиска повторяемого, предсказуемого процесса или методологии, которая бы улучшила продуктивность, качество и надежность разработки. Одни пытались систематизировать и формализовать этот, по-видимому, непредсказуемый процесс. Другие применяли к нему методы управления проектами и методы программной инженерии. Третьи считали, что без постоянного контроля со стороны заказчика разработка ПО выходит из-под контроля, что влечет за собой увеличение временных и финансовых затрат.
Информатика как научная дисциплина предлагает и использует на базе методов структурного программирования технологию надежной разработки программного обеспечения, используя тестирование программ и их верификацию на основе методов доказательного программирования для систематического анализа правильности алгоритмов и разработки программ без алгоритмических ошибок.
Данная методология направлена на решение задач на ЭВМ, аналогичной технологии разработки алгоритмов и программ, используемой на олимпиадах по программированию отечественными студентами и программистами с использованием тестирования и структурного псевдокода для документирования программ в корпорации IBM с 70-х годов.
Методология структурного проектирования программного обеспечения может использоваться с применением различных языков и средств программирования для разработки надежных программ любого назначения.
Однако при использовании классического подхода к разработке возникают проблемы, описанные под хабракатом:
Читать, какие
Total votes 34: ↑25 and ↓9+16
Comments27

htop и многое другое на пальцах

Reading time26 min
Views281K


На протяжении долгого времени я не до конца понимал htop. Я думал, что средняя загрузка [load average] в 1.0 означает, что процессор загружен на 50%, но это не совсем так. Да и потом, почему именно 1.0?

Затем я решил во всём разобраться и написать об этом. Говорят, что лучший способ научиться новому — попытаться это объяснить.
Читать дальше →
Total votes 138: ↑130 and ↓8+122
Comments43

Бот для telegram с состоянием в СУБД и классификацией текста

Reading time7 min
Views15K
Т.к. мой классификатор из прошлого поста таки работает (впрочем, параметры «из коробки» не всегда удачны, потому я вынес возможность слегка настроить Conv1d-слои и скрытый слой) — я решил прикрутить его к боту. Да, запоздал я на этот хайп ) Кстати, заранее уточню, что прикрутить русский я пока таки не пробовал, хотя это не должно стать проблемой — в nltk поддерживаются нужные фичи, обучение word2vec концептуально не отличается от английского, да и предобученные модели вроде бы имеются.

Ну и сходу возникают вопросы:

  • под какие платформы его пилить — пока решил остановиться на telegram. В теории — конструкция позволяет легко дописать обертки для других платформ (как будто он кому-то понадобится )
  • как описывать «сценарий». Навелосипедил свою структуру с классами и сущностями поверх YAML
  • ну и неплохо бы хранить ботов/состояние в какой-нибудь БД

Читать дальше →
Total votes 14: ↑13 and ↓1+12
Comments2

Выпуск Rust 1.13

Reading time8 min
Views6.4K

Команда Rust рада представить выпуск Rust 1.13.0. Rust — это системный язык программирования, нацеленный на безопасность, скорость и параллельное выполнение кода.


Как обычно, вы можете установить Rust 1.13.0 с соответствующей страницы официального сайта, а также ознакомиться с подробным списком изменений в 1.13.0 на GitHub. В этот выпуск вошло 1448 патчей.


Это была по-настоящему горячая пора в Rust. Мы участвовали в трёх конференциях подряд — RustConf, RustFest и Rust Belt Rust. Было классно увидеть так много любителей Rust; со многими мы встретились впервые! Мы много думали о будущем, разрабатывали план на 2017 и создавали инструменты, нужные нашим пользователям.


И несмотря на всё это, мы собрали новый выпуск с кучей новых крутых фишек.


Что вошло в стабильную версию 1.13


Выпуск 1.13 включает долгожданный оператор ?, ускорение компиляции, добавление
некоторых возможностей в Cargo и стандартную библиотеку. Также этот выпуск привносит множество небольших улучшений в документацию и сообщения об ошибках. Это результат работы многих людей, и они не упоминаются в замечаниях к выпуску индивидуально.

Читать дальше →
Total votes 35: ↑33 and ↓2+31
Comments6

Лямбды и анонимные классы: кто больше жрёт

Reading time7 min
Views49K

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

Читать дальше →
Total votes 74: ↑69 and ↓5+64
Comments35

Сделано в МТИ: система контроля версий Gitless

Reading time4 min
Views36K

Все вы знаете систему Git. Хотя бы слышали — это наверняка. Разработчики, которые пользуются системой, ее или любят, или ругают за сложный интерфейс и баги. Система управления версиями Git де-факто является стандартом в индустрии. У разработчика могут быть мнения о преимуществах Mercurial, но чаще всего приходится мириться с требованием уметь пользоваться Git. Как у любой сложной системы, у нее множество полезных и необходимых функций. Однако, до гениальной простоты добираются не все, поэтому существующая реализация оставляла пространство для совершенствования.

Простыми словами — мудреным приложением было трудно пользоваться. Поэтому в лаборатории Массачусетского Технологического Института взялись за улучшения и отсекли все «проблемные элементы» (ведь то, что для одного проблема, для другого легко может быть преимуществом). Улучшенную и упрощенную версию назвали Gitless. Её разрабатывали с учетом 2400 вопросов, связанных с Git и взятых с сайта разработчиков StackOverflow.

Команда авторов вычленила самые проблемные места в Git, включая две концепции staging и stashing. Затем они предложили изменения, призванные решить известные проблемы.
Читать дальше →
Total votes 97: ↑87 and ↓10+77
Comments93

Как работает Git

Reading time19 min
Views148K
В этом эссе описана схема работы Git. Предполагается, что вы знакомы с Git достаточно, чтобы использовать его для контроля версий своих проектов.

Эссе концентрируется на структуре графа, на которой основан Git, и на том, как свойства этого графа определяют поведение Git. Изучая основы, вы строите своё представление на достоверной информации, а не на гипотезах, полученных из экспериментов с API. Правильная модель позволит вам лучше понять, что сделал Git, что он делает и что он собирается сделать.

Текст разбит на серии команд, работающих с единым проектом. Иногда встречаются наблюдения по поводу структуры данных графа, лежащего в основе Git. Наблюдения иллюстрируют свойство графа и поведение, основанное на нём.

После прочтения для ещё более глубокого погружения можно обратиться к обильно комментируемому исходному коду моей реализации Git на JavaScript.
Читать дальше →
Total votes 110: ↑99 and ↓11+88
Comments38

Три столпа платформы для системы документооборота

Reading time5 min
Views6.6K
«Мы есть то, что мы едим» — к этому выводу пришли еще древнегреческие мудрецы. Именно они подметили, что пища, из которой, как из кирпичиков, складывается фундамент организма, влияет не только на самочувствие человека, но также и на его настроение, умственную деятельность и даже отвечает за «духовное здоровье».
image
У системы документооборота тоже может быть свой фундамент — технологическая платформа. Выбор платформы и принципов, на которых она построена, в буквальном смысле влияет на то, как СЭД будет дальше жить — ведь эти принципы и есть те самые “кирпичики”, которые обеспечивают ее устойчивость.

СЭД, представленные “коробочной” версией, практически все схожи по функциональности, поскольку представляют собой типовые решения, подходящие для большинства организаций. Однако, если документооборот организации отличается целым рядом особенностей, которые не в состоянии учесть ни одно “коробочное” решение, здесь не обойтись без конструктора: система должна предоставлять возможности для доработки.

Именно в таких случаях важен выбор платформенного решения. Однако, какой должна быть платформа, лежащая в основе будущей СЭД? Какие фундаментальные принципы должны лежать в ее основе? Мы выделили для себя три основных принципа, которыми должна обладать технологическая платформа системы электронного документооборота, чтобы обеспечить успешное развитие СЭД в будущем.
Читать дальше →
Total votes 10: ↑6 and ↓4+2
Comments15

Процессный подход к управлению: дань моде или залог успеха?

Reading time13 min
Views20K
Теория систем рассматривает процесс как изменение системы. Действительно, любая деятельность — это действия, направленные на достижение результата, который выражается в том, что система обретает новое состояние. С процессами мы сталкиваемся в разработке, технике, химии и даже социологии. Однако каждый из нас ежедневно является участником рабочих процессов. Как показывает опыт, нередко руководители компаний избегают автоматизации и формализации процессов, им это кажется не совсем демократичным «закручиванием гаек». А напрасно. Грамотное построение и управление процессами в компании любого профиля помогает обеспечить адекватное взаимодействие сотрудников, обусловленное ответственностью и вниманием к срокам. Процессный подход не умер — он лежит в основе множества модных теорий управления разработкой, компанией, персоналом. Сегодня мы расскажем, где встречаются процессы, как ими управлять и нужны ли они вам в принципе.
Читать дальше →
Total votes 22: ↑15 and ↓7+8
Comments12

Ошибки при подключении платежей в интернете

Reading time5 min
Views13K
Сегодня мы поговорим о самых распространённых, по моему мнению, ошибках при подключении платежей в Интернете. Неправильно выбранная схема может закончиться отключением торговой точки от платёжной системы, занесением её в TMF (Terminated Merchant File) и штрафами. За то время, пока я работаю в ChronoPay, я сталкивался с самыми разнообразными схемами подключения и обхода правил МПС, так что статья написана полностью из моего опыта :)



Начнем с самой простой и распространенной, “мы подключаем физиков”. 
По закону РФ, для ведения предпринимательской деятельности в сети Интернет вам нужен статус Индивидуального Предпринимателя (ИП) или юридическое лицо (ст. 23 ГК РФ). Без регистрации такая деятельность так же может классифицироваться как Незаконное Предпринимательство (171 УК РФ). Угроза не самая серьезная, но может «выстрелить» в самый неподходящий момент.

Читать дальше →
Total votes 9: ↑7 and ↓2+5
Comments8

Создание библиотеки для iOS

Reading time3 min
Views12K

Разработчики часто сталкиваются с типовыми задачами, которые появляются в новых проектах. Постепенно накапливается база вспомогательного кода, которая собирается в библиотеки и переносится из проекта в проект. И чем больше проектов, тем тяжелее становится поддерживать такие библиотеки.
image

Читать дальше →
Total votes 15: ↑14 and ↓1+13
Comments7
1
23 ...

Information

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