Для одной внутренней утилиты мне понадобилось написать сканирование изменений в директории, по аналогии с утилитой find, и я столкнулся с неожиданной вещью: стандартный Open()+Readdir()+Close() в go очень медленным по сравнению с тем, как работает linux'овая утилита find. На картинке можно видеть strace этой утилиты. Можно видеть, что она делает какие-то очень странные системные вызовы, и в этих системных вызовах мы и попытаемся разобраться и написать аналог find на go, который будет работать только под Linux, но зато со сравнимой скоростью.
Рубрика «ненормальное программирование» - 71
Пишем замену find(1) на golang под Linux
2016-04-11 в 16:33, admin, рубрики: find, Go, golang, linux, ненормальное программирование, Программирование, чтение директорииСнова об Electron или рисуем музыку ВК
2016-04-09 в 23:33, admin, рубрики: electron, ES6, javascript, nobody cares, node.js, код не очень, ненормальное программирование, метки: nobody cares, код не очень
Добра всем!
Electron — эта такая забавная штука, про которую мало статей на хабре(сходу нашел только habrahabr.ru/post/272075 и habrahabr.ru/post/278951). Давно хотел написать что-нибудь такое-эдакое, вот руки и дошли — заодно и одним велосипедом в мире станет больше.
Итак, если вкратце: electron — это такой гибрид node.js и chromium'а. Зачем? Очень разнообразный диапазон применений — мощное GUI(html/js/css), нехилая расширяемость(в том числе с возможностью использования других языков вроде C++ или C#), всякие приятности вроде jQuery и т.д. В-общем, удобная штука для разработки и дистрибуции standalone кроссплатформенных приложений.
Теперь о приложении. Оно реализует базовый пример расширения функционала стороннего сайта, базовые принципы работы с Raphael.js(графическая библиотека для отрисовки/анимации svg), Dancer.js(библиотека для визуализации звука, в данном случае — получения audio waveform).
Рекурсия на PHP — алгоритм, применение
2016-04-05 в 8:10, admin, рубрики: php, Алгоритмы, алгоритмы поиска, древовидное меню, древовидные структуры, ненормальное программирование, рекурсивные запросы, рекурсивные перечисления, рекурсияК написанию этой статьи сподвигли многие часы раздумий и экспериментов в области построения иерархических списков. Изначально логика обкатывалась на SQL запросах на стороне СУБД, но особенности этого языка заставили выполнить реализацию на стороне приложения PHP. Здесь я покажу как пройти от корня иерархии до каждого конечного элемента и обратно, логика реализуема на любом языке программирования.
Итак, тестовая иерархия, с которой нам предстоит работать:
В базе данных имеется самая простая таблица на самом простом MSSQL сервере, тонкости подключения опустим, наша цель — разобраться с иерархией и рекурсией.
Создадим таблицу:
CREATE TABLE [dbo].[Test](
[uid] [int] IDENTITY(1,1) NOT NULL, -- уникальное поле, автоинкрементное
[pid] [int] NULL, -- это поле указывает на элемент уровнем выше, содержит uid родителя
[name] [varchar](255) NULL,
[access] [varchar](50) NULL, -- права доступа
) ON [PRIMARY]
Песочница для программистов
2016-04-04 в 22:16, admin, рубрики: AI, java, sandbox, ненормальное программирование, Спортивное программированиеПривет!
Я хочу сыграть с тобой в игру.
Но если быть точным, то я хочу презентовать вам результат моей работы за последние пару месяцев. Кодовое название — песочница.
Что это?
Суть данной системы проста: это песочница для программистов. Здесь можно и нужно писать исскуственный интеллект для своих ботов и играть с ботами других участников. Во что играть? Все просто — в дурака. Да-да, в карточную игру.
Данная система выросла из небольшого проекта по изучению пермишенов в Java. Изначально мне было просто интересно как работают разграничения выполняемого кода, как строится плагинная архитектура и т.д. Но в итоге захотелось обернуть все это в законченный продукт — вот как все вышло.
Кому интересно, давайте взглянем поближе на саму систему.
Читать полностью »
Стеганография в акроконструкциях. Алгоритм DANTSOVA
2016-04-01 в 7:04, admin, рубрики: dantsova, just4fun, python, акроконструкции, акростихи, борщ!, день дурака, Донцова, информационная безопасность, криптография, машинное обучение, ненормальное программирование, Стеганография, метки: dantsova, акроконструкции, акростихи, Донцова, стеганография— Потом решила избавиться. Во!
— Ей!.. так хорошо?
— А, без разницы...
Давно хотел опубликовать этот just4fun проектик по стеганографии, но что-то не было времени.
И вот и время и повод нашелся.
К тому же пятница!
Решил я как-то раз реализовать стеганографию в акроконструкциях.
Для наглядности сделать, как в акростихах, только автоматизировать процесс и строить акропредложения автоматически. Короче говоря, повторить задумку Тритемия, только программным способом ;)
Интерфейс итоговой программы прост:
- пользователь вводит сообщение на русском языке;
- программа выдает акротекст. (Это текст, по первым буквам каждого слова которого можно собрать исходное сообщение).
Например на запрос "привет хабр!" программа написала текст: "потом решила избавиться во ей так хорошо а без разницы". Знаки препинания программа пока не расставляет — это делает пользователь на свое усмотрение.
Конечно далеко до naitive русского языка, но для just4fun проекта, написанного на коленке за пару вечеров, я думаю сгодиться…
Алгоритм обучается на бесчисленных романах Дарьи Донцовой. Именно поэтому он в честь нее и назван — DANTSOVA.
Кому интересно, как все это работает, прошу под кат!
[The Methanum project] Создание инструментария для построения распределенных систем с топологией “Звезда”
2016-04-01 в 6:43, admin, рубрики: .net, C#, c#.net, wcf, Блог компании Тинькофф Банк, ненормальное программирование, Программирование, распределенные системы, событийное программированиеЗвезда — на сегодняшний день самая распространенная топология компьютерных сетей. Такая структура обладает рядом преимуществ: легкостью масштабирования, надежностью (выход из строя одной машины не сказывается на других) и простота администрирования. Конечно это решение из физического уровня давно реализовано и на программном уровне. Тем не менее, представляю на суд читателей свою версию инструментария .Net для построения распределенных систем с топологией звезда. Читать полностью »
Кортежи в языках программирования. Часть 2
2016-03-31 в 12:43, admin, рубрики: tuples, дизайн языков программирования, кортежи, ненормальное программирование, Программирование, языки программирования В предыдущей части я рассмотрел реализации кортежей в различных языках программирования (причем я рассматривал компилируемые не скриптовые языки со статической типизацией и классическим си-подобным синтаксисом, что вызвало удивление у некоторых читателей). В этой части я предлагаю выйти за рамки существующего и заняться по сути дизайном языка программирования. Исходные данные — такие же: компилируемый не скриптовый язык со статической типизацией и си-подобным синтаксисом, включающий императивную парадигму (хотя и не ограничивающийся ею разумеется).
Итак, попробуем помечтать и поэкспериментировать — а что вообще можно сделать с кортежами? Как выжать из них максимум возможностей? Как с их помощью сделать язык программирования мощнее и выразительнее, как вызвать восхищение у истинных Хакеров Кода и при этом не слишком запутать обычных программистов? Какие неожиданные возможности появляются в языке, если правильно и грамотно экстраполировать семангтику кортежей в разных направлениях, и какие затруднения при этом возникают?
Итак, если вам нравится размышения и холивары на тему дизайна языков программирования, то прошу под кат.
Читать полностью »
Погоня с препятствиями
2016-03-28 в 6:55, admin, рубрики: Board Games, forth, game development, perl, настольные игры, ненормальное программирование
Какая медлительная страна! — сказала Королева. — Ну, а здесь,
знаешь ли, приходится бежать со всех ног, чтобы только остаться
на том же месте! Если же хочешь попасть в другое место, тогда
нужно бежать по меньшей мере вдвое быстрее!
Льюис Кэрролл "Алиса в Зазеркалье"
Сегодня, я хочу рассказать об удивительной и недооценённой игре, с которой я познакомился чуть менее двух лет назад. В каком-то смысле, именно с этой игры, а также с Ура, началось моё знакомство с Дмитрием Скирюком. В те дни я только начинал интересоваться настольными играми. Мои познания были скудны и, во многом, наивны. Такие игры как "Чейз", буквально открыли для меня новый необъятный мир. Даже сейчас, работа над этой игрой, в большой степени, напоминает детективную историю. В этом отношении, игра "Chase" полностью оправдала как своё название так и сходство с псевдонимом известного американского писателя.
Читать полностью »
Самое широкое простое число, записанное римскими цифрами
2016-03-25 в 17:25, admin, рубрики: times new roman, Занимательные задачки, математика, ненормальное программирование, поиграем со шрифтами, прокрастинация, римские цифры, метки: римские цифрыОдин из моих любимых развлекательных твиттеров – это @wacnt. Там появляются вопросы, на которые не может ответить математический поисковик Wolfram|Alpha. На некоторые, кстати, мне сумел дать ответ виртуальный ассистент Facebook M.
Вот штучка из недавних, которая заставила меня улыбнуться:
простое число, не большее 4000, получающееся самым широким при записи римскими цифрами шрифтом Times New Roman
widest prime less than 4000 when written as a Roman numeral in Times New Roman
— Wolfram|Alpha Can't (@wacnt) 4 февраля 2016 г.
Facebook M просто выдал самое большое из простых чисел, близких к 4000 – это 3989. Но это не обязательно так, ведь речь идёт о римской записи.
В рамках ежедневной прокрастинации мне срочно нужно было узнать ответ именно на этот вопрос.
Для начала я составил список простых чисел, меньших 4000. Из-за лени я просто нагуглил их и вставил в скрипт.
Читать полностью »