Рубрика «Программирование» - 484

Противоестественная диагностика - 1

Разбираться с падениями программы у конечных пользователей — дело важное, но довольно тяжкое. Доступа к машине клиента обычно нет; если есть доступ, то нет отладчика; когда есть отладчик, оказывается, что проблема не воспроизводится и т.п. Что делать, когда нет даже возможности собрать специальную версию приложения и установить её клиенту? Тогда добро пожаловать под кат!
Читать полностью »

В этой статье я продемонстрирую реализацию внедрения зависимости, репозитория и единицы работы, используя Castle Windsor в качестве DI-контейнера и NHibernate как инструмент объектно-реляционного отображения (ORM).

Внедрение зависимости и реализация единицы работы с помощью Castle Windsor и NHibernate - 1
Читать полностью »

image

Это Иван Бакаидов — программист, автор на Хабре, панк, восемнадцатилетний гражданин Российской Федерации, инвалид первой группы по причине Церебрального паралича.

В прошлом году я прочитал статью «Как узнать какие цветы дарить девушке, если у нее двигается только голова и она не может говорить?», она поразила меня похлеще чем «Смотря на код с закрытыми глазами».

Интервью с Иваном ibakaidov. Есть над чем подумать.

Расскажи, как впервые увидел компьютер? Как заинтересовался программированием и как учился?

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

А вот посадить меня за него предложили в институте раннего вмешательства. Это питерская организация, активная в 1990х, 2000х годах. Они собрали прогрессивных специалистов в сфере реабилитации и много сотрудничали с западом.

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

Распознавание лиц. Создаем и примеряем маски - 1

Пока сообщество iOS-разработчиков спорит, как писать проекты, пока пытается решить, использовать ли MVVM или VIPER, пока пытается подSOLIDить проект или добавить туда реактивную турбину, я попытаюсь оторваться от этого и рассмотреть, как работает под капотом еще одна технология с графика Hype-Driven-Development.

В 2017 году на вершине графика хайпа — машинное обучение. И понятно почему:

  • Появилось больше открытых наборов данных.
  • Появились соответствующее аппаратные средства. В том числе облачные решения.
  • Технологии из этой области стали применяться в production-проектах.

Машинное обучение — широкая тема, остановлюсь на распознавании лиц и попытаюсь разобраться, какие технологии были до рождества христова CoreML, и что появилось после релиза фреймворка Apple.

Читать полностью »

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

История инженерных конструкторов fischertechnik - 1

Сегодня я хочу поделиться материалом о проекте, который уже 52 года способствует формированию инженерных кадров в разных странах, включая СССР и РФ. Речь пойдет о конструкторах fischertechnik (Фишертехник).

Читать полностью »

image
Я пишу программы уже больше 15-ти лет, из них 11 — профессионально. Т.е. получаю за это деньги. Через меня прошло десятки коммерческих проектов разной величины. Вспоминая себя того, совсем юного девелопера, я понимаю насколько разнится мышление у матерого разраба и юнца. Насколько развита интиуция и понимание после десяти лет разработки разноплановых проектов и только вышедшего из универа парня. Который, в то время, и курсовую левой рукой напишет, и дипломную, и даже авторегистратор для сайта знакомств.

В те годы, 10 лет назад, я думал скорее о хорошем тоне программирования, комментариях, наследовании и паттернах. О заученных постулатах Страуструпа и Кнута. К слову последний, до сих пор загорается яркой лампой в голове, со своей оптимизацией программ. Это «O(N^2) или O(NlogN)» невольно думается, когда выводишь 7 записей по дням недели.

А стоило прочитать серию для экспертов С++, того же Александреску или Скотта Мейрса, так мозги вскипали как бабушкин чайник. Вот и приходилось мне тогда, приступая к реальной задаче, создавать абстракции над абстракциями, оптимизировать неоптимизируемуемое, объявлять константы и константые геттеры-сеттеры. Обязательно создавать конструкторы и деструкторы, в общем и целом 90% времени заниматься оформлением кода, чтобы все было как у в учебнике.
При этом программа выводила ничего. А заказчик то ждал…

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

Всем доброго! Как и обещали, вторая часть перевода статьи по теме Java EE. Первую часть можно увидеть тут.

ОПЕРАЦИЯ ПОД ПРИКРЫТИЕМ

Надеемся, вы не только сейчас поняли, что бюджет равен 0, и вообще вас покорил WebLogic ;) До сих пор, мы рассматривали темы, значимые на начальных этапах, во время изучения серверов приложений. Теперь же посмотрим чуть глубже на каждый сервер, чтобы понять, отвечает ли он реальным задачам разработчика:

  • Настоящие показатели производительности;
  • Функционал и Соответствие Open Standards;
  • Администрирование и Управление/UI;
  • Стоимость $$$/Лицензия.

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

Настоящие показатели производительности

Знали ли вы, что Lamborghini Gallardo LP570-4 Superleggra 2011 г. выпуска разгоняется от 0 до 60 км/ч всего за 2.8 с, а Dodge Viper Hennessey Venom GT делает это за целых 2.9 с? Думаю, водителям Viper ооочень скучно ждать, пока их машина разгоняется до 60!

Дебаты об отличном сервере приложений Java c Tomcat, Jboss, GlassFish, Jetty и Liberty Profile. Часть вторая - 1
Читать полностью »

А у вас никогда не возникало ощущения, что "вот это" уже надоело? Что хочется чего-то нового? "Вот этим" может быть что угодно: игра, работа, машина. Что-то любое, что повторяется изо дня в день. А в программировании? Под катом вы найдете историю об усталости от C# и выборе более интересного подхода.

F# на Linux как лекарство для души - 1Читать полностью »

Как и зачем определять голосовую почту - 1

«Абонент не абонент — пожалуйста, оставьте ваше сообщение после звукового сигнала!» — мы слышим этот автоматический ответ множество раз и уже привыкли вешать трубку, точно зная, что никто и никогда не проверяет «голосовую почту». Я, как и все опрошенные знакомые, без гугла даже не смогу ее проверить! Зачем операторам эта странная штука? А чтобы брать деньги за звонки, которые иначе будут бесплатными. Причем не только с обычных абонентов, но и с компаний, которые используют автоматику для звонков. Представьте себе магазин, который подтверждает заказы не колл-центром через полчаса, а роботом через десять секунд. И часть этих звонков «уходит» в голосовую почту, тратя деньги компании и ломая статистику. Под катом — детективная история про early media, big data, machine learning и TensorFlow.
Читать полностью »

Зависимости между слоями приложения | Внедрение конструктора, время жизни

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

Агрегация, внедрение конструктора

Объекты/классы системы, как и слои, взаимодействуют друг с другом. Между классами тоже есть зависимости.

Например, в листинге 1 MyService использует MyDataContext (EF) – имеет зависимость MyDataContext.

class MyService
{
    public void DoSomething()
    { 
        using(var dbCtx = new MyDataContext())
        {
            // используем dbCtx
        }
    }
}

Листинг 1. Сильная зависимость MyService от MyDataContext

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js