Как стать автором
Обновить
1
0
Дмитрий Жильцов @zaabjuda

Пользователь

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

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

Время на прочтение13 мин
Количество просмотров20K
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!
Читать дальше →

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

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


Читать дальше →

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

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


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

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

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

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


Читать дальше →

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

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

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



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



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


Читать дальше →

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

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


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

А раз уж все равно выбирать — почему бы не написать об этом?
Читать дальше →

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

Время на прочтение6 мин
Количество просмотров19K
Всем доброго времени суток!

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

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

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

Что же там еще есть такого вкусного?

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

Время на прочтение4 мин
Количество просмотров55K
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. Ниже мы рассмотрим это более детально.
Читать дальше →

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

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

Источник

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

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

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

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

Каким образом представить и подать себя как специалиста (или «вольного» консультанта), о котором мечтает любая компания? Очевидно, что, как и для любой непростой задачи, решение должно быть комплексным.
Читать дальше →

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

Время на прочтение7 мин
Количество просмотров32K
На протяжении нескольких десятилетий стоит задача поиска повторяемого, предсказуемого процесса или методологии, которая бы улучшила продуктивность, качество и надежность разработки. Одни пытались систематизировать и формализовать этот, по-видимому, непредсказуемый процесс. Другие применяли к нему методы управления проектами и методы программной инженерии. Третьи считали, что без постоянного контроля со стороны заказчика разработка ПО выходит из-под контроля, что влечет за собой увеличение временных и финансовых затрат.
Информатика как научная дисциплина предлагает и использует на базе методов структурного программирования технологию надежной разработки программного обеспечения, используя тестирование программ и их верификацию на основе методов доказательного программирования для систематического анализа правильности алгоритмов и разработки программ без алгоритмических ошибок.
Данная методология направлена на решение задач на ЭВМ, аналогичной технологии разработки алгоритмов и программ, используемой на олимпиадах по программированию отечественными студентами и программистами с использованием тестирования и структурного псевдокода для документирования программ в корпорации IBM с 70-х годов.
Методология структурного проектирования программного обеспечения может использоваться с применением различных языков и средств программирования для разработки надежных программ любого назначения.
Однако при использовании классического подхода к разработке возникают проблемы, описанные под хабракатом:
Читать, какие

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

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


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

Затем я решил во всём разобраться и написать об этом. Говорят, что лучший способ научиться новому — попытаться это объяснить.
Читать дальше →

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

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

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

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

Читать дальше →

Выпуск Rust 1.13

Время на прочтение8 мин
Количество просмотров6.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 и стандартную библиотеку. Также этот выпуск привносит множество небольших улучшений в документацию и сообщения об ошибках. Это результат работы многих людей, и они не упоминаются в замечаниях к выпуску индивидуально.

Читать дальше →

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

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

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

Читать дальше →

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

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

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

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

Команда авторов вычленила самые проблемные места в Git, включая две концепции staging и stashing. Затем они предложили изменения, призванные решить известные проблемы.
Читать дальше →

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

Время на прочтение19 мин
Количество просмотров151K
В этом эссе описана схема работы Git. Предполагается, что вы знакомы с Git достаточно, чтобы использовать его для контроля версий своих проектов.

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

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

После прочтения для ещё более глубокого погружения можно обратиться к обильно комментируемому исходному коду моей реализации Git на JavaScript.
Читать дальше →

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

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

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

Именно в таких случаях важен выбор платформенного решения. Однако, какой должна быть платформа, лежащая в основе будущей СЭД? Какие фундаментальные принципы должны лежать в ее основе? Мы выделили для себя три основных принципа, которыми должна обладать технологическая платформа системы электронного документооборота, чтобы обеспечить успешное развитие СЭД в будущем.
Читать дальше →

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

Время на прочтение13 мин
Количество просмотров21K
Теория систем рассматривает процесс как изменение системы. Действительно, любая деятельность — это действия, направленные на достижение результата, который выражается в том, что система обретает новое состояние. С процессами мы сталкиваемся в разработке, технике, химии и даже социологии. Однако каждый из нас ежедневно является участником рабочих процессов. Как показывает опыт, нередко руководители компаний избегают автоматизации и формализации процессов, им это кажется не совсем демократичным «закручиванием гаек». А напрасно. Грамотное построение и управление процессами в компании любого профиля помогает обеспечить адекватное взаимодействие сотрудников, обусловленное ответственностью и вниманием к срокам. Процессный подход не умер — он лежит в основе множества модных теорий управления разработкой, компанией, персоналом. Сегодня мы расскажем, где встречаются процессы, как ими управлять и нужны ли они вам в принципе.
Читать дальше →

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

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



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

Читать дальше →

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

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

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

Читать дальше →
1
23 ...

Информация

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