Обновить
1203.68

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

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

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

Работа с FTP и выгрузка данных в xlsx (Caché Object Script)

Время на прочтение5 мин
Охват и читатели8.3K
Предлагаю Вашему вниманию статью на следующие на темы:
  1. Работа с FTP сервером с помощью %Net.FtpSession
  2. Простой способ выгрузки данных в формат xls
  3. Несколько полезных советов

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

Смена парадигмы программирования на C#, переход на сигналы и очереди (слоты)

Время на прочтение7 мин
Охват и читатели17K
В этом посте я рассматриваю концепцию и ее реализацию (пока в начальной, но рабочей стадии), которая с недавних пор стала меня сильно привлекать. Опыта в программировании на сигналах у меня ранее не было, поэтому что-то мог упустить или неоптимально продумать, потому и пишу сюда. Надеюсь на квалифицированные отзывы и советы. Несмотря на то что библиотека только начала развиваться, я уже начал ее использование в реальных проектах, на реальной нагрузке, это помогает быстро понять что действительно нужно и куда двигаться дальше. Так что весь приведенный код находится в рабочем состоянии, компилируется и готов к использованию. Единственное все делается на Framework 4.5, но не думаю что это будет для кого-то препятствием, если же идея окажется стоящей, пересобрать под 3.5 проблем не будет.

Что же не так с текущей парадигмой


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

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

В общем все это постепенно надоедает, становится лень писать одни и те же вещи в каждом новом проекте, когда правильнее было бы сосредоточиться на логике задачи.
Читать дальше →

Примеры генерации и отправки Email средствами СУБД Caché

Время на прочтение6 мин
Охват и читатели4.4K
Нередко возникает необходимость в автоматической генерации и отправке электронных писем на основе данных из БД. Это могут быть различные отчёты с таблицами, диаграммами или уведомления о наступлении каких-то событий.
Всё это можно реализовать непосредственно в самой СУБД Caché, выступающей здесь и как почтовый сервер приложений.

Далее рассмотрим следующие примеры:
  • создание текстового письма
  • создание письма в формате HTML
  • добавление вложений
  • добавление изображений в само тело письма
  • другие примеры
Читать дальше →

Используем method decorator в CoffeeScript(Javascript) для удобного и читаемого DRY-кода

Время на прочтение2 мин
Охват и читатели4.4K
Статья о простом, но не очевидном способе как сделать код чище и избавиться от копипасты.

Условно проблема выглядит вот так:
###
My awesome class
###
class Awesome
  doFoo : (arg, cb) ->
    unless arg is 42
      return cb Error """
                      only The Answer may be an argument, but got:
                      |arg| = |#{arg}|
                      """
    cb null, "#{arg} is The Answer"

  doBar : (arg, cb) ->
    # hm... arg must be The Answer too

У нас есть кусок кода (тот, что с проверкой), который во-первых похоже потребуется повторить в новом методе, да и вообще отвлекает от основного действа в методе.

Совсем немного текста о том, как method decorator делает мою жизнь лучше

Эмуляция троичной системы. Вариант концепции

Время на прочтение4 мин
Охват и читатели15K
1. Пролог

Недавно я прочитал замечательную статью [1]. В ней автор рассказывает о том, что не всегда вычислительные машины были двоичными. На заре компьютерной эры существовали машины, которые использовали десятичную и троичную систему счисления.
Десятичная система удобна человеку, но ее достаточно сложно реализовать на существующей элементной базе. Кроме того, десятичная система подвержена ошибкам в результате искажения сигнала при передаче. Троичную систему реализовать не на много сложнее двоичной ([2]), но она способна дать как минимум три преимущества.
Читать дальше →

О некоторых неочевидных хаках при работе с entity framework и unique constraints

Время на прочтение5 мин
Охват и читатели11K
image
Пару лет назад, когда деревья были большие и зеленые, ко мне пришли злые дотнетчики, и сказали — ага, попался! пришлось мне помочь коллегам в одном весьма странном проекте.

А именно — представьте себе пачку цифирей, которые аналитики составляют раз в месяц, в любимом ими пакете MS Office. И вот раз в месяц появилась необходимость эти цифры пережевывать и загружать в БД под управлением MS SQL.

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

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

Готовим продвинутые CGridView

Время на прочтение6 мин
Охват и читатели40K
Данный пост будет интересен тем кто начинает знакомится с Yii framework, то есть пользователям от начального до среднего уровня знаний данного фреймворка, а так же тем кто любит похоливарить на тему какой из фреймворков круче.
Читать дальше →

Применение метода SURF в системах контроля и управления доступом на основе биометрических технологий

Время на прочтение3 мин
Охват и читатели20K
Метод Speeded Up Robust Features (SURF) положительно зарекомендовал себя в задачах поиска объектов на изображениях, 3D реконструкции, при сравнении изображений. Рассмотрим применение этого метода в биометрических системах, осуществляющих аутентификацию по васкулярному рисунку руки.

Метод SURF решает две задачи – поиск особых точек изображения и создание их дескрипторов (описательного элемента, инвариантного к изменению масштаба и поворота). Кроме того, сам поиск ключевых точек тоже должен обладать инвариантностью, т.е. повернутый объект сцены должен обладать тем же набором ключевых точек, что и образец.

Метод ищет особые точки с помощью матрицы Гессе. Детерминант матрицы Гессе (т.н. гессиан) достигает экстремума в точках максимального изменения градиента яркости. Для двумерной функции ее детерминант определяется следующим образом:
Читать дальше →

PDF Report: Моя первая программа для iPhone

Время на прочтение3 мин
Охват и читатели8.1K
Здравствуйте, читатели Хабра! Хочу поделиться историей создания своей первой программы для iPhone: PDF Report.
Читать дальше →

Простые вещи. Файл настроек и небольшой прицеп утилит

Время на прочтение15 мин
Охват и читатели964
Этот пост, для тех, кто пишет на C[/C++]. Остальные могут не читать.

Как всегда, работая над проектами хочу поделится очередной технологией. Наверное, громко сказано. Скорее, простым решением в области создания и работы с файлом настройки программ.

В мире много готовых решений. От XML-формата до… Одним словом, много. Данная статья не претендует на что-то сверхновое, не побуждает к дискуссиям о стиле, методах и реализации.

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

Перейдём, непосредственно, к решению.

IT-компот #13 Подкаст о программировании и технологиях

Время на прочтение1 мин
Охват и читатели1.1K
image
Импровизируем. Решаем задачу про высокую нагрузку, предложенную Славой Федотовым. Обсуждаем перспективы выхода iPad Mini. Как работодателю найти хорошего программиста, а программисту — интересную работу. Напоследок — всякие веселости про использование программирования в обычной жизни.

В выпуске:
  • Решаем задачу: быстро поднять статистику в highload application.
  • iPad Mini: быть или не быть? И нужно ли оно кому-то?
  • «Возьмите меня». Найм программистов. Взгляд с двух сторон баррикад.
  • Как программирование помогает нам решать повседневные задачи.


Слушать в Itunes
слушать на podfm
скачать файл(59.3 Мб)
Читать дальше →

Однострочники на Си/С++. Часть 2

Время на прочтение2 мин
Охват и читатели9.9K

Ранее я уже публиковал статью о Однострочниках на С++. Так в этом посте я хочу упомянуть ещё несколько алгоритмов, а также несколько реализаций алгоритма обмена двух чисел(с вычислением времени работы).
Всех заинтересовавшихся прошу под кат;)
Читать дальше →

IT-компот #12 Подкаст о программировании и технологиях

Время на прочтение1 мин
Охват и читатели1K
image
Обсуждаем увиденное на презентации от Google. Появление их браузера на iOS. Говорим о важности наличия здравого смысла у программиста и о некоторых базовых принципах, которые он должен знать. Клавиатуры и метод слепой печати: наш опыт.

В выпуске:
  • Новинки Google I/O: Android 4.1, планшет Nexus 7 и очки дополненной реальности.
  • Google Chrome for iOS всем!
  • Я знаю DRY, KISS, YAGNI, SOLID и еще кучу непонятных слов.
  • Какими клавиатурами мы пользуемся и как набираем код.


Слушать в Itunes
слушать на podfm
скачать файл(69 Мб)
Читать дальше →

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

Легкое обновление прошивки Raspberry Pi от Hexxeh

Время на прочтение1 мин
Охват и читатели10K


Многие поклонники гаджетов уже сделали предзаказ мини-компьютера Raspberry Pi, а некоторые счастливчики уже получили эти устройства. Само собой, эти устройства, прежде всего, попали в руки девелоперов, программистов, гиков и любителей поработать с разного рода железом. И уже началась работа по изменению прошивки Raspberry Pi. Это не такой и простой процесс, и разработчик с ником Hexxeh сумел упростить все это. Он создал собственный инструмент, автоматизирующий процесс обновления прошивки.

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

CALL SYMPUT vs CALL SYMPUTX или SAS Base для чайников

Время на прочтение4 мин
Охват и читатели7.2K
Добрый день, дорогие читатели.
В этой статье я расскажу о двух процедурах языка SAS Base и о небольших тонкостях их применения.
Тем, кто уже достаточно работает с этим языком, эти вещи покажутся элементарными, но для начинающих они, возможно, позволят избежать грабли, на которые я наступил в самом начале моего знакомства с SAS Base.
Читать дальше →

Коды, исправляющие ошибки. Варианты программной реализации

Время на прочтение2 мин
Охват и читатели8.1K
Сразу прошу не «прогонять пинками», я старался, и это может быть полезно для таких же школьников как я.

Коды, исправляющие ошибки.


Существует множество кодов, исправляющих ошибки в двоичном коде. Это очень полезно, потому что множество информации портиться при хранении или передачи информации. Одним из примеров данных кодов можно привести «код Хемминга»(Подробно о нём уже написал другой автор http://habrahabr.ru/post/140611/). Они добавляют к бинарному тексту дополнительные, кодовые биты, при помощи которых мы сможем исправить полученные ошибки.
Читать дальше →

Баг при различных сохранениях в админке MODX Revolution в Opera (Вечная загрузка)

Время на прочтение1 мин
Охват и читатели4.9K
По мне неясным причинам (если кто-то значет истинную причину и почему ее не устраняют — скажите, буду очень благодарен), при использовании Opera для администратировании сайта на MODX Revolution в момент сохранения ресурса появляется окно «вечной» загрузки.

Это окно можно убрать одним способом — обновив страницу. А так как административная часть работает по принципам «AJAX» это очень замедляет работу.

Баг проявляется на момент написания статьи в последней версии Opera 11.10, MODX Revolution 2.1.5-pl (advanced) и Ext JS Library 3.4.0.

Предлагаю временное решение этого вопроса (до выхода новой версии Ext JS Library в состав пакета MODX Revolution или пока MODX (или Opera) это не пофиксят).

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

Создание запрещенного информационного потока. 257 тредов

Время на прочтение3 мин
Охват и читатели971
Это первая статья из серии статей о создании запрещённых информационных потоков (ИП). Идеи организации этих ИП придуманы не здесь и не мной. Мне довелось лишь реализовывать в учебных целях утилиты, демонстрирующие эти уязвимости.

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

Сетевой планшетный сканер

Время на прочтение4 мин
Охват и читатели5.4K
Добрый день, уважаемый хаброчитатель!

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

Если все же интересно, то приступим

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