Как стать автором
Обновить
5.62

Кодобред

Код, за который должно быть стыдно

Сначала показывать
Порог рейтинга
Уровень сложности

Создание JPEG из ниоткуда

Время на прочтение4 мин
Количество просмотров22K
Вот интересная демонстрация возможностей afl; меня реально удивило, что она работает!

$ mkdir in_dir
$ echo 'hello' >in_dir/hello
$ ./afl-fuzz -i in_dir -o out_dir ./jpeg-9a/djpeg

В сущности, я создал текстовый файл только со словом "hello" и попросил фаззер выдавать поток в программу, которая ожидает на входе изображение JPEG (djpeg это простая утилита, которая идёт вместе с распространённой графической библиотекой IJG jpeg; libjpeg-turbo тоже должна подойти). Конечно, мои входные данные не похожи на валидное изображение, так что утилита быстро отвергает их:

$ ./djpeg '../out_dir/queue/id:000000,orig:hello'
Not a JPEG file: starts with 0x68 0x65
Читать дальше →
Всего голосов 68: ↑61 и ↓7+54
Комментарии21

Разработка → Казахстан: Как я помогал сдать 100 форму налоговой отчетности. Продолжение 300 форма

Время на прочтение4 мин
Количество просмотров3.4K
*Это не луна. Это космическая станция.
– Оби-Ван Кеноби*

Приветствую социум!


1 статья → Начало 200 форма


Продолжение...


Следующим этапом для решения задач моего заказчика были налоговые декларации по НДС. Что интересно кабинет налогоплательщика мог экспортировать лишь небольшие 300 формы в виде xml. Остальные формы экспортировались только при помощи программы СОНО. И эти формы были заархивированы.


Но не все так просто как кажется с первого раза.



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

А мне интересно как в Казахстане обрабатывают налоговые декларации в онлайн режиме ...
Всего голосов 15: ↑13 и ↓2+11
Комментарии4

Казахстан: Как я помогал сдать 100 форму налоговой отчетности. Начало 200 форма

Время на прочтение5 мин
Количество просмотров8.4K
Приветствую социум! Давным-давно (пару дней назад числа 25 марта), в далекой-далекой галактике (в Алматы, Казахстан)…

Моя знакомая, бухгалтер, позвонила мне со словами:

" — Привет Ринат! Ты же увлекаешься программированием! Я тут устроилась на новую работу, в ТОО-шку. За прошлый год тут сменилось несколько бухгалтеров по налогам. А мне нужно сдать годовой отчет. Я продление уже запросила, и у меня есть месяц чтобы разобраться в цифрах. Я то конечно разберусь, за недельку, но не факт что все будет правильно. Помоги. Нужно немного автоматизировать проверку уже сданных деклараций."

Я не долго думая решил помочь, девушка то не плохая, а иногда и полезная, в прикладном смысле.

И вот тут меня ждала засада…
А мне интересно как в Казахстане обрабатывают налоговые декларации в онлайн режиме ...
Всего голосов 13: ↑13 и ↓0+13
Комментарии5

Пузырьковая сортировка и бинарный поиск на PHP (обучение, эксперименты)

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

Введение


Хотел бы поделиться с сообществом своей реализацией пузырьковой сортировки и бинарного поиска. Проект сделал исключительно в учебных целях.

Когда меня раньше спрашивали на собеседовании об алгоритмах сортировки и реализации поиска по массивам данных — я терялся и считал, что для реализации подобных вещей надо быть как минимум талантливым отличником-олимпиадником, что это сложно-долго-малоизучено и т.п. :) Так же я находил курсы, где за несколько недель (месяцев) предлагают научить всех желающих всему-всему по алгоритмам, сортировкам, криптографии. Но ведь сейчас есть Интернет, а в нем уже все выложено и известно? Остается только поднять и изучить нужные знания и практически реализовать и закрепить приобретенные знания.

Итак, приступим к реализации самих алгоритмов. Забегая вперед скажу, что статья состоит из трех логических частей: реализация алгоритмов, тестирование написанного кода (PHPUnit) и проведение нагрузочных тестов (базовые функции языка VS написанный код).

Т.е. как бы имитируется разработка некой системы (выполнение практической задачи) и прохождение по всем обязательным этапам (исходя из существующих на сейчас «стандартов» разработки).


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

Истории

Быть настоящим и писать код VS перебирать и казаться

Время на прочтение6 мин
Количество просмотров21K
Отличный фреймворк!
Простой, чистый, производительный!
Так на его могиле и напишем...

image

Полсотни интернет-зависимых не спят. Прижав тощие и не очень задницы к стульям, они флудят в самописном чатике. Удовольствие стоит 6 рублей в час (цена «городского интернета» в далеких
2000-х с одним сервером на город-полумиллионник).


На это хватало сэкономленного на студенческих обедах. На выход в Глобальный Интернет по 33 рубля (хренасе!) в час — уже нет. Писк модема на 33600. Ночь.


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

Не все языки программирования одинаково полезны

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


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

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

Какие-то знаковые системы проще для освоения, какие-то сложнее. Однако среди них есть и весьма причудливые. А есть настолько сложные, что осваивают их только самые хардкорные разработчики.
Читать дальше →
Всего голосов 52: ↑37 и ↓15+22
Комментарии163

Троллейбус из буханки или alias analysis в LLVM

Время на прочтение1 мин
Количество просмотров19K
В преддверии очередной конференции C++ Siberia, я решил выложить на всеобщее оборзрение запись доклада с февральской конференции C++ Russia, проходившей в городе-герое Санкт-Петербурге.

Зачастую, знакомство с алиасингом в C++ у многих программистов начинается и заканчивается одинаково: -fno-strict-aliasing. На вопросы новичка, более опытные коллеги отвечают в стиле: «не трогай! а то все сломаешь!». Новичок и не трогает.

В докладе сделана попытка заглянуть под капот компилятора и понять, что же там, внутри? Что такое alias analysis, где он может быть полезен, в чем его преимущества и недостатки. Тема рассмотрена и со стороны программиста и со стороны разработчика компилятора. А по сему, вопрос «зачем?» был центральным.

В докладе вы найдете:

  • Код Quake3 и стандарт IEEE754
  • Магическую константу 0x5F3759DF
  • Много ассемблера x86
  • Много IR кода LLVM
  • Rust, Java и даже Fortran
Читать дальше →
Всего голосов 23: ↑17 и ↓6+11
Комментарии36

Изменение исходников ( DDL ) на лету

Время на прочтение13 мин
Количество просмотров15K
При сопровождении ERP систем иногда возникает необходимость массового изменения кода процедур, функций, триггеров или пакетов. Например для замены вызова одной процедуры на вызов другой.
Если надо поменять пару процедур, то можно сделать это в ручную, но когда надо изменить несколько сотен объектов, то приходиться задуматься об автоматизации процесса. В статье описан пример автоматизации для СУБД ORACLE 11g.
Читать дальше →
Всего голосов 11: ↑10 и ↓1+9
Комментарии14

Движок для построения отчётов на SQL. Идея

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

Статья написана с точки зрения программиста из техподдержки ERP системы.

Выполняя очередное тестовое задание, по очередной вакансии, мне в голову пришла очередная гениальная идея.
Почему бы не отдать пользователю редактирование формул для вычисления колонок отчёта? Получиться тот же самый Excel к которому все привыкли, только синтаксис — SQL.

И конечно за 30 лет развития ERP систем это уже конечно где то было реализовано. Но их алгоритмы это их тайны, а мне не жалко. я поделюсь идеей.
Читать дальше →
Всего голосов 11: ↑7 и ↓4+3
Комментарии4

Так ли безопасен Tox, как его малюют?

Время на прочтение6 мин
Количество просмотров102K
Tox Sux
Всем привет!

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

В последнее время наблюдается нездоровая тенденция переоценивать защищенность подобных систем только на основании того, что они P2P. Буду излагать объективные факты и дополнять их своими комментариями, чтобы не бросаться громкими фразами в пространство. Выводы предлагаю делать самостоятельно.

Заранее отвечу на вопрос: мой pull request был принят.
А теперь факты:
Всего голосов 80: ↑78 и ↓2+76
Комментарии87

Откуда берутся плохие программисты и в чем их проблема

Время на прочтение18 мин
Количество просмотров106K
image

Данная публикация раскрывает проблему возникновения плохих программистов на личном примере, подразумевая, что аналогичные ситуации сплошь и рядом. Тем не менее, в конце публикации будет попытка вывести основные ключевые аспекты, которые если не решить, то хотя бы стоит о них задуматься.
Читать дальше →
Всего голосов 106: ↑62 и ↓44+18
Комментарии146

Попытка измерить талант провалилась…

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

Введение


image Наверное, вам, как и мне, в течение последних лет, приходилось задумываться o, или осуществлять смену места работы. Скорее всего, как и мне, вам иногда приходилось иметь дело с, так называемыми, сервисами «измерения таланта». Будь то Codility или CEB, в целом суть которых сводится к одному и том уже — проверить ваши навыки в той или иной сфере деятельности. Но выполняют ли они эту задачу и насколько хорошо?.. Давайте рассмотрим несколько доводов и примеров.
Читать дальше →
Всего голосов 24: ↑17 и ↓7+10
Комментарии17

Худшая в мире капча для сайта с многомиллионной аудиторией

Время на прочтение2 мин
Количество просмотров99K
Это небольшая заметка про факап и профессиональную импотенцию сайта с сотнями миллионов пользователей, или «Как не надо делать капчу?»

За примерами нормальной капчи далеко ходить не нужно: это и знаменитая reCAPTCHA:

image

...и кириллическая капча от Яндекса:

image

Но сегодня речь пойдёт о китайской капче в её самом худшем виде. Причём дело не в иероглифах.

Перед вами капча сайта китайских железных дорог (местная монополия) по адресу 12306.com. Она просит отметить картинку (или картинки) с изображением агата (玛瑙).



Знаете правильный ответ?
Читать дальше →
Всего голосов 85: ↑73 и ↓12+61
Комментарии121

Ближайшие события

7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань

Быстрая разработка отчетов на Java: дауншифтинг с «1С: Предприятие»

Время на прочтение4 мин
Количество просмотров18K
Приветствую уважаемых читателей.

Как и обещал в первой статье Быстрая разработка CRUD на Java: дауншифтинг с «1С: Предприятие», продолжаю описание своих OpenSource проектов, реализующих аналогичную 1С: Предприятию функциональность.

На сей раз, это СКД — система компоновки данных, и моя разработка FlexReporting (ссылка на GitHub).
В чем суть этого механизма? Это некий realtime — ROLAP инструмент, который на лету трансформирует «плоские» данные в иерархические отчеты.

На самом деле, есть много любителей поспорить, что СКД это не «тру» OLAP, но я бы напомнил, что такая вещь как агрегаты, заранее рассчитывающие и хранящие многомерные данные по всем (или по заданным) сочетаниям измерений оборотных регистров накопления — а это весомый аргумент для использования этой аббревиатуры. Впрочем, от споров по терминологии очень хотелось бы уклониться.

Вот так это выглядит в 1С ERP 2.0:



Функции СКД (и моей разработки) — дать пользователю источник данных, а уж он пусть как хочет играется с настройками отчета:

1. Задает, в какой последовательности будут выводиться данные, какие группировки будут по вертикали, какие по горизонтали.
Например: склад, товар, менеджер и т.д.
2. Задает набор показателей, и агрегатные функции (сумма, среднее, количество, минимум, максимум и проч.), которые будут к ним применяться.
Например: сумма(стоимость), среднее(количество_товара), максимум(дата_отгрузки).

В общем-то, этого можно добиться и в Excel, используя функционал сводных таблиц, но в базовом варианте неплохо бы иметь это в собственной системе, если предполагается формировать из нее гибко настраиваемые отчеты. Что я и сделал, изобретя на фрилансе очередной велосипед — как обычно не нашел с ходу простого и функционального решения для этой задачи, а время поджимало.
И вот что получилось.
Всего голосов 14: ↑11 и ↓3+8
Комментарии8

git punish – команда которой мне всегда нехватало

Время на прочтение1 мин
Количество просмотров5.2K
Бывает, хочется подойти к подсказанным git blame-ом коллегам, посмотреть им ласково в глаза и поговорить о наболевшем. В такие моменты отсутствие команды git punish кажется невообразимым.
К счастью, это поправимо
Всего голосов 35: ↑15 и ↓20-5
Комментарии26

Мой код не работает :-(

Время на прочтение1 мин
Количество просмотров21K
Представляем наглядное пошаговое руководство по поиску и устранению ошибок в коде для языка Python, которое мы в Alconost перевели специально для Хабра. Следуйте по стрелкам, чтобы определить вероятную причину проблемы — и, если первое из найденных решений не подходит, возвращайтесь и пробуйте еще.

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


Картинка кликабельна

Переведено с любовью к коду компанией-локализатором Alconost.
Всего голосов 28: ↑16 и ↓12+4
Комментарии12

Восемь различных типов программистов

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

Кадр из фильма Kingsman

Уверены, в этой статье вы точно узнаете своих сотрудников, а возможно, и себя. Шведский предприниматель и разработчик Дэвид Эльбе описал восемь типов программистов, с которыми ему приходилось иметь дело за последние 10 лет работы в проектах по веб-разработке. Какие типы лучше всего объединить в команду и какой код от них ждать — читайте в переводе от Alconost.

1. Агент 007



Кадр из мультфильма “Пингвины Мадагаскара”
Быстро вникает в ваши проблемы и решает их. Не очень заботится о качестве кода. Ему не придет в голову исправлять отступы в чужом коде. Если необходимо, «воспользуется скотчем».

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

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

Плохо срабатывается с Перфекционистом.
Читать дальше →
Всего голосов 108: ↑77 и ↓31+46
Комментарии87

Проблемы, вызванные определением кортежей как функторов

Время на прочтение8 мин
Количество просмотров5.6K
Очень удивительно (я бы даже сказал — внезапно!), но кортеж-пара в GHC является функтором. Это сложно понять, ведь функтор должен иметь только один параметр, а у пары их два. Можно восхищаться тем, как разработчики стандартной библиотеки GHC умудрились предоставить такую абстракцию, но мне кажется, полученное решение все же следует признать неудачным.

Начнем с того, что оно интуитивно непонятно. Скажем, попробуйте вычислить вручную, не используя инструментов GHC, выражение (1+) `fmap` (2, 3). А после этого проверьте полученный результат, например, в ghci. У многих ли результат ручного вычисления совпал с тем, который выдала система? И если у вас результаты все же совпали, мне очень хотелось бы услышать хорошее объяснение того, как именно вам это удалось.
Читать дальше →
Всего голосов 20: ↑18 и ↓2+16
Комментарии24

Автомат как реактивный двигатель: реальная физика нереального полёта

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

Перевод поста Malte Lenz "Machine Gun Jetpack: The Real Physics of Improbable Flight".
Скачать файл с моделями, рассмотренными в посте, можно здесь здесь.
Выражаю огромную благодарность Кириллу Гузенко за помощь в переводе.

Можно ли летать с помощью автомата, используя реактивную силу, возникающую при выстрелах? Этот вопрос был задан в статье What if? Рэндалла Манроу “Machine Gun Jetpack” (перевод поста на русский язык). Оказывается что можно, потому что некоторые автоматы создают достаточную силу для того, чтобы поднимать свой собственный вес, а может даже и немного больше. В этом посте я исследую динамику стреляющих вниз автоматов, а так же действующие при этом силы, порождаемые скорости и то, на какую высоту можно будет подняться таким способом. Я так же продублирую предупреждение из статьи: пожалуйста, не повторяйте этого дома. Для этого есть программные среды для моделирования.
Читать дальше →
Всего голосов 59: ↑55 и ↓4+51
Комментарии33

Программист == творчество || программист != творчество

Время на прочтение3 мин
Количество просмотров47K
Вот уже наверное полгода меня не покидает мысль написать именно эту статью. Каждый раз, видя в переходе метро играющих на различных музыкальных инструментах людей, я хотел прийти домой и со всей свойственной мне решительностью изложить свои мысли в статье.

image

Но приходя домой, я принимался за свое любимое занятие – создание игр.
Читать дальше →
Всего голосов 52: ↑31 и ↓21+10
Комментарии85