Как стать автором
Обновить
27
Карма
0
Рейтинг
Михаил Червоненко Tchervonenko @RusMikle

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

Бухгалтерский учет для программистов

Финансы в IT
Из песочницы

Введение


Занимаюсь автоматизацией бухгалтерского учета 17 лет. После универа поработал как программист бухгалтерской программы. Выяснилось, что есть спрос на программистов этой программы. Поменял одну работу, вторую. Начал брать заказы на стороне. Выяснилось (или показалось), что выполнять заказы выгоднее, чем получать зарплату. Стал частным предпринимателем. Выяснилось (или опять показалось), что продавать программу выгоднее, чем программировать. Стал дилером. Оказалось, что выгоднее всего – подписка на обновления и обслуживание. Возможно, еще выгоднее сделать веб-сервис для онлайн-бухгалтерии…

В ходе работы приходилось нанимать программистов и обучать основам бухгалтерского учета. Когда обучал программистов бухучету, мне нравилось за час рассказать им всю базовую теорию. Приятно срывать покровы сложности и таинственности. Оказывается, курсы бухгалтеров никому не нужны. Нет такой науки. Разве что набор терминов, в которых путаются сами бухгалтера…
Читать дальше →
Всего голосов 51: ↑51 и ↓0 +51
Просмотры 77K
Комментарии 182

Подробнее об атрибутах в Delphi 2010. Пример — проверка данных

Delphi *
Перевод
МышаВ моей предыдущей статье Кратко об атрибутах в Delphi 2010, я показал основы связанные с созданием, применением и опросом атрибутов. Однако, я не привел пример, для чего вы могли бы их использовать.

Вероятно, наиболее распространенным является пример для персистентности, и, действительно, кто-то опубликовал подобный пример на сайте Wings of Wind. Я хотел бы показать другое их применение — для проверки данных (Validation).
Читать дальше →
Всего голосов 16: ↑10 и ↓6 +4
Просмотры 6.1K
Комментарии 43

Кратко о RTTI и атрибутах в Delphi 2010

Delphi *
Перевод
RTTI (Runtime Type Information) было тщательно переработано в Delphi 2010.
RTTI является центральным элементом, на котором написано Delphi IDE, он существует со времен первого выпуска, однако я слышал от некоторых людей на протяжении многих лет, что они попытались использовать RTTI и нашли это слишком сложным и замысловатым, особенно по сравнению с Reflection API в Java и .NET. Вот это настоящий позор, поскольку возможность писать код для запроса подробной информации о других объектах, не зная заранее их типа, это действительно мощная возможность.
Читать дальше →
Всего голосов 48: ↑28 и ↓20 +8
Просмотры 13K
Комментарии 380

Изучаем отладчик, часть первая

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

Так как большинство моих статей ориентированы на людей, интересующихся применением защиты в своем ПО, я решил, что подача материала с конкретными кусками кода защиты (наподобие опубликованных ранее) только запутает читателя. Гораздо проще начать от азов и потихоньку давать новый материал на уже готовой базе.

Поэтому в данной статье будет рассмотрен один из базовых инструментов программиста – отладчик.
Цели статьи: рассмотреть основные методы работы с отладчиком, показать его расширенные и редко используемые возможности, дать понимание работы механизмов отладчика на примерах и рассмотреть некоторый набор методов противодействия.

Объем статьи получился неожиданно большим, поэтому я разбил ее на три части:

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

Собственно, приступим.
Читать дальше →
Всего голосов 36: ↑27 и ↓9 +18
Просмотры 149K
Комментарии 13

Создание приложений для СУБД Firebird с использованием различных компонент и драйверов: FireDac

Open source *Delphi *Firebird/Interbase *
Туториал
В данной статье будет описан процесс создания приложений для СУБД Firebird с использованием компонентов доступа FireDac и среды Delphi XE5. FireDac является стандартным набором компонентов доступа к различным базам данных начиная с Delphi XE3.

Наше приложение будет работать с базой данных модель, которой представлена на рисунке ниже.

diagramm


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

Эта модель является просто примером. Ваша предметная область может быть сложнее, или полностью другой. Модель, используемая в этой статье, максимально упрощена для того, чтобы не загромождать описание работы с компонентами описанием создания и модификации модели данных.
Читать дальше →
Всего голосов 15: ↑13 и ↓2 +11
Просмотры 65K
Комментарии 9

Java собеседование. Коллекции

Java *Алгоритмы *
С недавнего времени у меня появилась настойчивая мысль, что профессиональное развитие сильно замедлилось и это хочется как-то исправить. Да, читаю книги, слушаю курсы, но в то же время приходит и понимание того, что возможно пришло время сменить работу, здесь вроде как все изучено, плавно уходим в рутину. Данная мысль сподвигла меня на рассылку своего резюме в несколько компаний — лидеров рынка. После прохождения собеседования в 3 из них, я решил, как водится внести свои 5 копеек в освещение обширной темы собеседования, а именно технических вопросов по Java коллекциям, с которыми приходится сталкиваться. Да, знаю, читатель скажет: «коллекции — избитая тема, сколько можно», но часть из приведенных ниже вопросов, я задавал своим знакомым разработчикам, которые занимают именно позиции разработчиков («крепких середнячков», по меркам недалекой от Москвы глубинки, которые уверенно справляются со своей работой на практике, а вот в теории скажем так есть пробелы, потому, что работа не требует решения каких-то нетривиальных задач, да и потому что не всем это интересно — изучать как внутри работает структура данных), вызывало растерянность. Думаю, что рассмотренный материал будет не очень интересен разработчикам выше уровня Junior (я попрошу их комментировать, дополнять и критиковать изложенный здесь материал), а вот Junior`ы уверен, найдут в этой статье интересное для себя.
Читать дальше →
Всего голосов 97: ↑86 и ↓11 +75
Просмотры 851K
Комментарии 306

Лямбда-выражения в Java 8

Разработка веб-сайтов *Программирование *Java *
В новой версии Java 8 наконец-то появились долгожданные лямбда-выражения. Возможно, это самая важная новая возможность последней версии; они позволяют писать быстрее и делают код более ясным, а также открывают дверь в мир функционального программирования. В этой статье я расскажу, как это работает.

Java задумывалась как объектно-ориентированный язык в 90-е годы, когда объектно-ориентированное программирование было главной парадигмой в разработке приложений. Задолго до этого было объектно-ориентированное программирование, были функциональные языки программирования, такие, как Lisp и Scheme, но их преимущества не были оценены за пределами академической среды. В последнее время функциональное программирование сильно выросло в значимости, потому что оно хорошо подходит для параллельного программирования и программирования, основанного на событиях («reactive»). Это не значит, что объектная ориентированность – плохо. Наоборот, вместо этого, выигрышная стратегия – смешивать объектно-ориентированное программирование и функциональное. Это имеет смысл, даже если вам не нужна параллельность. Например, библиотеки коллекций могут получить мощное API, если язык имеет удобный синтаксис для функциональных выражений.

Главным улучшением в Java 8 является добавление поддержки функциональных программных конструкций к его объектно-ориентированной основе.
Читать дальше →
Всего голосов 60: ↑51 и ↓9 +42
Просмотры 448K
Комментарии 24

Шпаргалки Java программиста 9: Java SE — Шпаргалка для собеседований и повторений

Разработка веб-сайтов *Программирование *Java *Разработка мобильных приложений *Разработка под Android *
Туториал
Данная статья в первую очередь предназначена для подготовки к собеседованиям на позицию Java разработчика (на самом деле, это шпаргалка, которую я писал для себя в течении многих лет, и повторяю при каждом новом поиске работы).

Предполагается. что вы знакомы с многими функциями из Java SE, поэтому в основном информация дается кратко. Конечно, можно использовать эту статью и просто для обучения основам Java SE платформы (но в этом случае, после чтения статьи вам скорее всего придется обратиться к другим источникам).

image

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

Внимание: я не буду касаться вопросов по самому языку Java (вроде для чего нужно слово final или чем overriding отличается от overloading), это потребует отдельной статьи, это вопросы именно по Java SE (6-9) платформе.
Читать дальше →
Всего голосов 30: ↑28 и ↓2 +26
Просмотры 123K
Комментарии 10

Шпаргалка Java программиста 1: JPA и Hibernate в вопросах и ответах

Разработка веб-сайтов *Open source *Программирование *Java *API *
Туториал
image

Знаете ли вы JPA? А Hibernate? А если проверить?

В чем смысл серии статей 'Шпаргалки Java программиста'
За время работы Java программистом я заметил, что как правило программисты постоянно и планомерно используют от силы 10-20% от возможностей той или иной технологии, при этом остальные возможности быстро забываются и при появлении новых требований, переходе на новую работу или подготовке к техническому интервью приходится перечитывать все документации и спецификации с нуля. Зато наличие краткого конспекта особенностей тех или иных технологий (шпаргалок) позволяет быстро освежить в памяти особенности той или иной технологии.




Данная статья будет полезна и для тех кто только собирается изучать JPA и Hibernate (В этом случае рекомендую сразу открывать ответы), и для тех кто уже хорошо знает JPA и Hibernate (В этом случае статья позволит проверить свои знания и освежить особенности технологий). Особенно статья будет полезна тем кто собирается пройти техническое интервью, где возможно будут задавать вопросы по JPA и Hibernate (или сам собирается провести техническое интервью).

Поехали...
Всего голосов 37: ↑32 и ↓5 +27
Просмотры 493K
Комментарии 15

Magento шаг за шагом

PHP *Разработка под e-commerce *
Туториал
Из песочницы
Magento — система управления интернет-магазинами. По данным Alexa, Magento — самая популярная система управления интернет-магазинами в мире на февраль 2013 г.

В настоящее время, из всех e-commerce решений, я отдаю предпочтение именно Magento:
  • EAV-модель базы данных, позволяет легко манипулировать аттрибутами товаров, категорий, пользователей
  • Большое количество платных и бесплатных модулей на Connect (пусть и не всегда написанных хорошо)
  • Открытый исходный код
  • Легкоразворачиваемый и обновляемый out-of-the-box интернет-магазин
  • Отличная и мощная админка
  • В сравнении с остальными, пожалуй, самый мощный базовый функционал для ecommerce

Читать дальше →
Всего голосов 15: ↑10 и ↓5 +5
Просмотры 45K
Комментарии 6

Архитектура REST

Разработка веб-сайтов *

Введение


В русскоязычной части Интернета присутствует большое количество статей, посвященных веб-службам на основе SOAP и XML-RPC, но почему-то почти ничего нет про вполне заслуживающую внимания (но менее распространенную) архитектуру RESТ.

В данной статье описываются основы этой архитектуры, возможности и примеры её использования.

Читать дальше →
Всего голосов 85: ↑78 и ↓7 +71
Просмотры 817K
Комментарии 75

Ловкость рук и никакого мошенничества: практические советы по ускоренному обучению дизайну для разработчиков

Блог компании Cloud4Y Веб-дизайн *Разработка веб-сайтов *Анализ и проектирование систем *Учебный процесс в IT
Перевод
Улучшаем дизайн проекта с помощью тактически грамотных действий, а не таланта.

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

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

Легко опустить руки и сказать: «Я никогда не смогу сделать это должным образом, я не художник!», Но, оказывается, есть уйма ловких приёмов, которые вы сможете использовать, чтобы поднять свою работу на другой уровень, не имея опыта в графическом дизайне.

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

1. Для создания иерархии используем цвет и вес вместо размера



Читать дальше →
Всего голосов 68: ↑67 и ↓1 +66
Просмотры 51K
Комментарии 28

Альтернативный терминал для Windows

Программирование *
Часто путают терминал и шелл. В тех же *nix есть шеллы (bash, csh, zsh, …) и терминалы (konsole/guake/yaquake/tilda и т.д. и т.п.) Для мира Windows общеизвестный терминал только один – стандартное консольное окошко, которое часто ошибочно называют «cmd.exe». И мало кто знает о существовании множества других эмуляторов терминала. Известных шеллов больше, их целых два: cmd.exe и powershell.exe. И хотя есть как минимум три порта bash (MinGW, CygWin, GIT) многие юниксоиды предпочитают ругать cmd.exe.

Меня не устраивал ни один из найденных альтернативных терминалов (как в 2009-м, когда я начал работу над ConEmu, так и сейчас). Казалось бы требований немного, вот основные:
Читать дальше →
Всего голосов 182: ↑175 и ↓7 +168
Просмотры 423K
Комментарии 194

Wireshark — приручение акулы

Информационная безопасность *Системное администрирование *Сетевые технологии *
Туториал


Wireshark — это достаточно известный инструмент для захвата и анализа сетевого трафика, фактически стандарт как для образования, так и для траблшутинга.
Wireshark работает с подавляющим большинством известных протоколов, имеет понятный и логичный графический интерфейс на основе GTK+ и мощнейшую систему фильтров.
Кроссплатформенный, работает в таких ОС как Linux, Solaris, FreeBSD, NetBSD, OpenBSD, Mac OS X, и, естественно, Windows. Распространяется под лицензией GNU GPL v2. Доступен бесплатно на сайте wireshark.org.
Установка в системе Windows тривиальна — next, next, next.
Самая свежая на момент написания статьи версия – 1.10.3, она и будет участвовать в обзоре.

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

Начинаем плаванье


Для начала захвата достаточно выбрать свой сетевой интерфейс и нажать Start.
Читать дальше →
Всего голосов 207: ↑202 и ↓5 +197
Просмотры 1M
Комментарии 60

10 инструментов, позволяющих парсить информацию с веб-сайтов, включая цены конкурентов + правовая оценка для России

Я пиарюсь
image

Инструменты web scraping (парсинг) разработаны для извлечения, сбора любой открытой информации с веб-сайтов. Эти ресурсы нужны тогда, когда необходимо быстро получить и сохранить в структурированном виде любые данные из интернета. Парсинг сайтов – это новый метод ввода данных, который не требует повторного ввода или копипастинга.

Такого рода программное обеспечение ищет информацию под контролем пользователя или автоматически, выбирая новые или обновленные данные и сохраняя их в таком виде, чтобы у пользователя был к ним быстрый доступ. Например, используя парсинг можно собрать информацию о продуктах и их стоимости на сайте Amazon. Ниже рассмотрим варианты использования веб-инструментов извлечения данных и десятку лучших сервисов, которые помогут собрать информацию, без необходимости написания специальных программных кодов. Инструменты парсинга могут применяться с разными целями и в различных сценариях, рассмотрим наиболее распространенные случаи использования, которые могут вам пригодиться. И дадим правовую оценку парсинга в России.
Читать дальше →
Всего голосов 21: ↑18 и ↓3 +15
Просмотры 339K
Комментарии 45

Node.js и переход с PHP на JavaScript

Блог компании RUVDS.com Разработка веб-сайтов *PHP *JavaScript *Node.JS *
Перевод
Больше десяти лет я был PHP-разработчиком, но недавно перешёл на JavaScript, используя его серверные и клиентские возможности. До этого я уже был знаком с JS. Сначала работал с jQuery, потом освоил Angular, и, наконец, начал пользоваться React.

Когда я начинал писать на PHP, я встраивал его в HTML-файлы. Получался не код, а полный бардак. Поэтому, для того, чтобы привести мои разработки в приличный вид, я начал пользоваться фреймворками, в частности, ZF1 и ZF2. Через некоторое время подход, при использовании которого начинают разработку с API, привёл к тому, что у меня оказался сервер, состоящий из сгенерированных REST API и из нескольких сотен строк моего собственного кода.



Так как лишь небольшая и не самая важная часть наших проектов была написана на PHP, возник вопрос о том, можем ли мы от него избавиться. И, если можем, чего нам это будет стоить, и что мы от этого получим. В этом материале я поделюсь опытом с теми, кто, как и я, хочет, понимая, что и зачем он делает, уйти из мира PHP и встать под знамёна JavaScript во всех его проявлениях.

Сегодня я расскажу, в основном, о своём путешествии с серверной стороны PHP на серверную сторону JS в виде Node.js. Здесь я не буду рассказывать о Webpack, React и о других клиентских технологиях JS.
Читать дальше →
Всего голосов 65: ↑52 и ↓13 +39
Просмотры 60K
Комментарии 115

На страх параноикам: куда нас привела разработка системы аналитики для борьбы с промшпионажем

Блог компании КРОК Информационная безопасность *Data Mining *


У одного из наших заказчиков появился довольно интересный запрос, связанный с работой контрразведки на предприятии. Цель — чтобы более чем дорогую (в том числе для государства) информацию не выносили наружу. Идея реализации — сбор всех возможных открытых данных о сотрудниках и выявление среди них «казачков» по шаблонам поведения. Собственно, это и раньше делали безопасники вручную, но теперь предлагалось применить хороший дата-майнинг.

А дальше стало жутковато: мы поняли, как много можем узнать друг о друге, используя всего лишь открытые данные. Начиная с промышленного шпионажа и заканчивая личными отношениями на работе. Полезло столько всего, что нам чуть было не порезали публикацию этого поста. Да и порезали бы, если бы полезных «гражданских» применений не оказалось бы в разы больше.
Читать дальше →
Всего голосов 60: ↑58 и ↓2 +56
Просмотры 38K
Комментарии 55

Верстка email рассылок от А до Я для чайников

Разработка веб-сайтов *HTML *Верстка писем *
Из песочницы
Уже 3 с лишним года занимаюсь дизайном и версткой почтовых рассылок, которые ориентированы на англоязычных пользователей. За время работы перелопатили огромную кучу информации, перепробовали много вариантов верстки, набили достаточное количество шишек. Были найдены и исправлены типичные баги, которые в той или иной мере повторялись во всех почтовых клиентах. Также нашлись проблемы с некоторыми CSS свойствами — различные почтовые клиенты интерпретировали их по разному. Каждое письмо тестировалось на самых популярных почтовых клиентах: Gmail, Outlook, Yahoo, Android, iOS, MozillaThunderbird, Microsoft Outlook, The Bat. Рассылки ходят на сотни миллионов пользователей и приносят очень хорошие результаты. Итак, приступим к изучению.
Читать дальше →
Всего голосов 66: ↑62 и ↓4 +58
Просмотры 377K
Комментарии 35

Хуки — это просто

Блог компании Инфопульс Украина Программирование *Системное программирование *
Туториал


Хуки — это технология перехвата вызовов функций в чужих процессах. Хуки, как и любая достаточно мощная технология, могут быть использованы как в благих целях (снифферы, аудио\видеограбберы, расширения функционала закрытого ПО, логирование, багфиксинг) так и со злым умыслом (трояны, кряки, кейлоггеры). О хуках уже не раз писали и на Хабре и не на Хабре. Но вот в чём беда — почему-то каждая статья о хуках буквально со второго абзаца начинает рассказывать о «таблице виртуальных функций», «архитектуре памяти» и предлагает к изучению огромные блоки ассемблерного кода. Известно, что каждая формула в тексте снижает количество читателей вдвое, а уж такие вещи — так и вовсе вчетверо. Поэтому нужна статья, которая расскажет о хуках просто. Под катом нет ассемблера, нет сложных терминов и буквально два десятка строк очень простого кода на С++. Если вы давно хотели изучить хуки, но не знали с чего начать — начните с этой статьи.
Читать дальше →
Всего голосов 94: ↑84 и ↓10 +74
Просмотры 122K
Комментарии 63

Информация

В рейтинге
Не участвует
Откуда
Münster, Nordrhein-Westfalen, Германия
Дата рождения
Зарегистрирован
Активность