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

Программирование *

Искусство создания компьютерных программ

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

Пишу на псевдокоде, работает в PHP

Время на прочтение4 мин
Количество просмотров2K
Я могу писать программы на псевдокоде и превращать их в PHP-код. Или в переносимый Си. Или ещё во что-нибудь. Список будет пополняться.

Часть проекта, которая «превращать в PHP», готова не полностью. Но я пишу статью уже сейчас, чтобы:

  • узнать, кому ещё интересен проект;
  • спросить у опытных пхпшников, как улучшить мой PHP-код и как померять, что именно тормозит.

Пример и технические детали под хаброкатом.
Читать дальше →
Всего голосов 43: ↑24 и ↓19+5
Комментарии30

Wolfram Mathematica: знакомство

Время на прочтение8 мин
Количество просмотров84K
Все знают Wolfram|Alpha, и наверняка слышали о Wolfram Mathematica. К сожалению, поиск показал отсутствие постов об этой замечательной среде на хабре, и данной статьей хотелось бы открыть серию публикаций посвященных программированию на Mathematica. Для начала стоит сказать о возможностях и особенностях этой системы, которых ой как много, так что запаситесь терпением. Если хабражителей заинтересует этот математический пакет, то обязательно последуют другие статьи, более конкретные, обучающие работе со средой и внутренним языком.

Читать дальше →
Всего голосов 130: ↑127 и ↓3+124
Комментарии60

KISS + Ruby = нагрузим сервер по быстрому

Время на прочтение8 мин
Количество просмотров1.6K
Опишу я тут историю как на коленках сделал «нагрузочное» тестирование сервиса, и некоторые соображения по поводу Ruby;)

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

Однажды с сервером случилась беда, для локализации дефекта нужно было нагрузить сервер — имитировать работу БОЛЬШОГО кол-ва одновременных активных клиентов.

Читать дальше
Всего голосов 34: ↑29 и ↓5+24
Комментарии25

Как не надо писать факториал в Java

Время на прочтение10 мин
Количество просмотров104K
Перевод этой статьи уже был однажды опубликован на хабре, но там почему-то осталась за кадром самая важная часть. Ниже — полный перевод.

На написание этой статьи меня вдохновила заметка "Как бы вы написали факториал на Java?". Так что извините, я немного поразглагольствую в коде: у меня есть главная мысль, которую я выскажу в конце.

Если вам надо написать факториал на Java, то большинство из ваc, вероятно, начнёт с чего-нибудь
такого
Всего голосов 201: ↑165 и ↓36+129
Комментарии37

Истории

Слой магии

Время на прочтение2 мин
Количество просмотров3.7K
Любая достаточно сложная технология неотличима от магии
Артур Кларк


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

Впрочем, даже знакомые с технологией в целом люди на каком-то этапе могут обнаружить, что происходящее с равным успехом могло бы быть магией — очень немногие понимают все протекающие процессы целиком.
Читать дальше →
Всего голосов 56: ↑36 и ↓20+16
Комментарии32

eBay API: Первые шаги

Время на прочтение5 мин
Количество просмотров30K
Как известно начать изучать что либо труднее всего, eBay API даже при том что у него нормальная документация не исключение. Я сам только недавно начал его изучать и пришлось плотно полазить по доке и сторонним ресурсам прежде чем в голове начала складываться нужная картина.
Этот пост предназначен для тех, кому нужно быстро начать работать с eBay API ну и для меня самого, что бы в будущем ничего не забыть.

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

Тесты для тестов

Время на прочтение5 мин
Количество просмотров20K
Один из самых частых ответов на вопрос «Почему я не пишу юнит-тесты» — это вопрос «А кто напишет тесты для моих тестов? Где гарантия, что в моих тестах тоже не будет ошибки?», что свидетельствует о серьёзном недопонимании сути юнит-тестов.

Цель этой заметки — коротко и чётко зафиксировать этот момент, чтобы больше не возникало разногласий.

Итак, юнит-тест — это
Читать дальше →
Всего голосов 79: ↑72 и ↓7+65
Комментарии111

Отмечание просмотренных серий на MyShows.ru

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

Постановка задачи


Задача: автоматизировать рутинные действия по отмечанию просмотренных эпизодов на сайте myshows.ru. Поясню, после просмотра очередной серии Теории Большого Взрыва я открываю мои сериалы, нахожу сериал, нахожу просмотренный эпизод и отмечаю его как «просмотренный».

После обнаружения api.myshows.ru сразу зародилась идея серьезно упростить этот процесс. Хотелось бы, чтобы это выглядело так: вызываем контекстное меню файла с только что просмотренной серией и выбираем «Отметить на myshows.ru».
Читать дальше →
Всего голосов 56: ↑45 и ↓11+34
Комментарии66

Эволюция Python-программиста

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

Начинающий


  1. def factorial(x):
  2.     if x == 0:
  3.         return 1
  4.     else:
  5.         return x * factorial(x - 1)
  6. print factorial(6)


Программирующий уже год (Ранее изучавший Pascal)


  1. def factorial(x):
  2.     result = 1
  3.     i = 2
  4.     while i <= x:
  5.         result = result * i
  6.         i = i + 1
  7.     return result
  8. print factorial(6)

Читать дальше →
Всего голосов 167: ↑143 и ↓24+119
Комментарии38

10 способов стать хорошим программистом

Время на прочтение5 мин
Количество просмотров100K
Хороший программист — это тот, кто смотрит в обе стороны, переходя дорогу с односторонним движением.
Даг Линдер

Что приводит программиста на его рабочее место каждый день? Страсть к программированию и получение удовольствия от него. Но чтобы действительно получать удовольствие и радость от программирования, нужно знать некоторые базовые вещи, которые позволят вам стать хорошим программистом.

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

Читать дальше →
Всего голосов 200: ↑184 и ↓16+168
Комментарии93

Пролог: База фактов из CSV файла

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

Импорт фактов в базу пролога из файла в формате CSV



Для того чтобы работать с фактами базы данных в прологе их (факты) необходимо импортировать из внешнего источника.


На схеме условно показаны три области активностей:
Желтая — подготовка промежуточного файла. Для простого импорта это может быть просто сохранение документа в формате CSV. Для работы по регламенту возможна настройка компонентов БД (например MS SQL Server Integration Services) для периодической выгрузки. Данная активность в статье не рассматривается.
Красная — импорт данных из CSV файла в базу фактов.
Зеленая — работа с базой фактов в Прологе.
Примечание. Стрелками показаны потоки данных.
Читать дальше про красную и зеленую область...
Всего голосов 6: ↑4 и ↓2+2
Комментарии4

Игра Жизнь на языке программирования Mercury

Время на прочтение7 мин
Количество просмотров4.7K
В рамках экспериментов с языком программирования Mercury а также под впечатлением уже неоднократно поднимавшейся в последнее время здесь темы игры Жизнь (1, 2, 3) захотелось написать свою реализацию на этом интересном языке программирования.

В двух словах о Mercury. Этот язык функционально-логического программирования замышлялся как усовершенствование prolog'а. Усовершенствование заключается в введении в пролог статической типизации (а так же декларирование режима детерминизма). Как результат — больше возможностей у компилятора создать эффективный исполнимый код, больший контроль на этапе компиляции. Любителям пролога, наверняка знаком анекдот:
Q: How many Prolog programmers does it take to change a light bulb?
A: False.

В царстве прологов нишу типизированных прочно занимает Visual Prolog. Но, стоит отметить, что подходы Visual Prolog и Mercury весьма отличны.
Читать дальше →
Всего голосов 30: ↑27 и ↓3+24
Комментарии12

Пишем свой промежуточный драйвер. Часть 1

Время на прочтение5 мин
Количество просмотров24K
Здравствуйте, уважаемые хабраюзеры!
Интересовались ли Вы когда-нибудь как работает снифер и что он из себя представляет? Или как Ваш любимый фаервол защищает Вас от троянов и прочей гадости на сетевом уровне? Да и вообще, как он работает? Я уверен, что Вы задавали себе такого рода вопросы, но все же, если нет, то я от части Вам про это расскажу. Начиная с этой статьи мы будем постепенно осваивать написание своего сниферо-подобного драйвера. Сегодня мы рассмотрим некоторые общие положения, которые нам будут необходимы для понимая всего того, что будет происходить в последующих статьях. Перед прочтением этой статьи, дабы у Вас началась складываться более или менее ясная картина, я рекомендую Вам прочтение прошлого топика Краткий обзор драйверов спецификации NDIS

Всем кому это интересно прошу под кат.
Читать дальше →
Всего голосов 32: ↑30 и ↓2+28
Комментарии13

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

Десериализация огромных и ошибочных xml-файлов

Время на прочтение4 мин
Количество просмотров6.5K
Некоторое время назад в одном проекте у меня стояла задача импорта данных, выгружаемых файлами xml. Откуда происходит выгрузка мне было не известно, да и не важно это. Главное что все ложилось в определенную папку. Каждый xml файл содержал один тип информации (выгружалась информация об одном и более объектов одного типа). Проект писался на C# поэтому и парсинг осуществлялся его средствами.

Читать дальше →
Всего голосов 21: ↑8 и ↓13-5
Комментарии151

Краткий обзор драйверов спецификации NDIS

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

Сетевые драйверы


Сетевые драйверы можно разделить на 2 категории: TDI-драйверы (Transport Driver Interface) и NDIS-драйверы (Network Driver Interface Specification). TDI-драйверы — это высокоуровневые драйверы, например, SMB-клиент, SMB-сервер, обертки SMB (NFFS, MSFS) и т.п. Мы с Вами рассмотрим NDIS-драйвера. NDIS — это специальный драйвер (ему соответствует файл ndis.sys), который содержит функции, используемые низкоуровневыми сетевыми драйверами. NDIS как бы обволакивает низкоуровневые сетевые драйверы и является посредником в их общении между собой и с железом. По сути NDIS можно считать третьим ядром Windows. Чтобы более четко уяснить себе что из себя представляет NDIS можно посмтореть на следующую картинку:

структура NDIS

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

Пишем HTTP proxy сервер с плагинами

Время на прочтение7 мин
Количество просмотров18K
imageОдно время всплыла тема, что в одной из онлайн-игр появилась такая довольно досадная штука, как каптча. Само по себе, отвлекаться от игры для ввода каптчи может обернуться не слишком хорошими последствиями, особенно, если вводишь её не с первого раза, могут и враги насолить. Но не в этом соль. Особенно плоха вещь для тех, кто использует локальных ботов. Те то, маленькие, спотыкаются об каптчу, и за это игра мнгновенно их штрафует потерей юнитов и ресурсов. Неприятная штука, что говорить.

Итак, задача:
Хочется, чтобы каптчу вводить не приходилось. Хоть если играешь сам, хоть если играет за тебя бот, если ты спишь.
Дополнительное условие: 40 часов времени (ибо паника на корабле).
Желательное условие: установочный файл под Windows.
Ещё одно желательное условие: результат должен занимать не более мегабайта.
Решение задачи с нуля под катом
Всего голосов 49: ↑34 и ↓15+19
Комментарии36

Как не дать программисту написать плохой код

Время на прочтение3 мин
Количество просмотров6.4K
image
Как-то раз в одной неглупой статье один неглупый хабраюзер рассказал одну неглупую идею. Суть её была в том, что в его компании настроена система, контролирующая написанный программистами код в момент попытки добавления его в репозиторий и отклоняющая код, не проходящий по некоторым критериям. Мне идея понравилась. Я (и еще 3 человека) попросили автора развить мысль и написать статью об этом, но она так и не появилась. И я решил разобраться сам.
Читать дальше →
Всего голосов 159: ↑141 и ↓18+123
Комментарии111

GIMP Script-fu: быстрое изучение и написание простых скриптов на Scheme (+ пакетная обработка бесплатно)

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

Вступление


В статье будет рассказано о том, как в кратчайшие сроки познакомиться с основами скриптинга в GIMP на языке Scheme и приступить непосредственно к решению простых практических задач. Данный материал предназначен лишь для тех, кто собирается автоматизировать рутинную обработку здесь и сейчас, не сильно вдаваясь в тонкости и не жертвуя драгоценным временем. Также, статью не рекомендуется использовать в качестве пособия по Scheme отдельно от Script-fu. Связано это с упрощённым стилем программирования в данном материале и отсутствием освещения других немаловажных фактов, которые нас сейчас волнуют гораздо меньше, чем скорость освоения.

Содержание:
  1. Что нам понадобится?
  2. Коротко о синтаксисе
  3. Переменные
  4. Функции
  5. Списки
  6. Регистрация скрипта в GIMP
  7. Написание кода
  8. Заключение
Читать дальше →
Всего голосов 56: ↑56 и ↓0+56
Комментарии21

Незаконченная история перехода с Delphi на C#

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

Предисловие


Всем доброго времени суток. Начиная с 2003 года, и по сегодняшний день, я профессионально занимаюсь разработкой прикладного программного обеспечения в среде Delphi 7 — Delphi 2010. И надо сказать, что эта работа позволяет мне достаточно неплохо зарабатывать на хлеб и пользоваться уважением своих коллег в нескольких организациях, с которыми я работаю.
Но многие наверняка знают о трудностях компании Borland, и как следствие провальной судьбе нескольких, вышедших подряд, версиях Delphi. Все Delphi, начиная с версии 8 (~2003 год) по 2007-ю, были не просто непопулярны. Их IDE были крайне нестабильны. Фатальные сбои среды разработки, требующие перезапуска, становились неотъемлемой частью процесса программирования. Сам язык менялся настолько незначительно, что большинство разработчиков на вопрос: “Что изменилось в новой версии?” могли только невнятно пробубнить: “Ну,… кажется, были добавлены новые компоненты…”. И только в 2009 году отделившаяся от Borland компания CodeGear смогла вывести на рынок относительно стабильную RAD Studio 2009, включающую новую версию Delphi. Подведя итоги, получаем 6 с лишним лет застоя, на фоне бурно развивающихся информационных технологий.
Поэтому и по сей день, значительный процент профессиональных разработчиков Delphi работает в 7-й версии. Могу только посочувствовать их упорству и посоветовать (если они и далее желают работать с Delphi) как можно скорее осваивать Delphi 2010. В сравнении с Delphi 7, 2010-я версия — это качественный скачек вперед. Я не стану подробно останавливаться на сравнении, поскольку это расходиться с темой статьи, но совсем промолчать не могу. Таких людей нужно чаще мотивировать, поскольку привыкание может быть существенной помехой на пути профессионального развития. Перейдя на версию 2010, вы получите стабильно работающую IDE, значительно превосходящую по комфорту работы среду Delphi 7. Из языковых возможностей вы приобретете поддержку юникода, возможность работы с обобщенными типами и анонимные методы, которые также могут плодотворно сказаться на качестве кода и скорости работы.
Читать дальше →
Всего голосов 118: ↑82 и ↓36+46
Комментарии226

Вклад авторов