Search
Write a publication
Pull to refresh
0
0
Vasiliy @JMS

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

Send message

Эмуляция события вызова функции

Reading time2 min
Views5.4K
Около полугода назад мне задали примерно такой вопрос: “Я использую крупный фреймворк, запускающий некую функцию по действию пользователя. Хочу, не меняя кода этой функции, выполнить по событию вызова этой функции свой код.”. Практика далеко не лучшая, события вызова функции не существует, я просто покрутил пальцем у виска и сказал, что это жуткий говнокод, так делать не стоит, да и это, просто-напросто, — невозможно.

Пару дней назад, направляясь домой относительно тёплым зимним вечером, не типичным для Одессы, у меня возникла нетипичная мысль: “А что если попробовать сделать то, что спрашивал Богдан полгода назад?”. Придя домой, я включил компьютер, и, в течении пары минут, сделал то, что задумал. В первую очередь, меня интересовало то, как будут себя вести встроенные методы, если их переопределить, и можно ли после этого как-нибудь вызвать прежнее их состояние, бывшее до переопределения. Я знал, что, если объект переопределяют, то ссылки на него не уничтожатся, сохраняя прежний вид. Что касается встроенных функций, имелись сомнения. Оказывается, можно.

Скорее всего, мне даже никогда не придется воспользоваться таким инструментом, но, чисто гипотетически, возможно, у кого-то возникнет задача проследить вызов той или иной функции, получив отчет о каждом вызове, состоящий из:
  1. Результата выполнения
  2. Переданных аргументов
  3. Контекста вызова (что есть this при вызове)
  4. Количества вызовов функции после создания обработчика

(Этот список полностью соответствует аргументам, передающимся в обработчик)
Очень мало буков

Что бы Нотч ни писал, все равно получается Minecraft

Reading time1 min
Views12K
Небезызвестный в среде инди разработчиков Маркус Перссон aka Notch, после своего ухода с поста главного разработчика Minecraft, решил принять участие в стартовавшем два дня назад конкурсе Ludum Dare 22 по созданию игр на заданную тему. Темой 22-го конкурса стало «одиночество».



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

Асинхронная синхронность. JSDeferred

Reading time4 min
Views6.8K
В последнее время на хабре появилось несколько статей про работу с асинхронными вызовами (После всех асинхронных вызовов, Синхронизация асинхронных вызовов. WaitSync). Но при ближайшем рассмотрении область их применения довольно узка так как эти способы не решают всех проблем.
Но для начала попробуем определить эти самые проблемы, с которыми мы сталкиваемся при работе с асинхронными вызовами.
Читать дальше →

Последовательный вызов асинхронных функций

Reading time3 min
Views33K
Как известно, язык JavaScript преследует парадигму событийно-ориентированного программирования. Это, безусловно, хорошо, но что делать, если за одной асинхронной функцией должна вызываться другая асинхронная функция, а затем еще одна, и еще… Иногда такой код очень запутывает, и не только человека привыкшего к синхронному и поочередному вызову функций. Это касается сложных анимаций, таймаутов, аякса, когда за одним должно следовать другое, и так дальше.

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

UPD
image
Ниже моё решение, являющееся аналогом этой функции модуля async и кучи других подобных решений, представленных в комментариях. Спасибо всем комментирующим и sedictor в частности.
/UPD

Рассмотрим пример (который взят из головы и в нем возможны ошибки) гипотетического парсера сайта, который после парсинга заносит данные в БД, и, после занесения, вызывает некоторый код.

var html = '';
request.on('response', function (response) {

    response.on('data', function (chunk) {
        html = html + chunk;
    });

    response.on('end', function() {
        //какой-то парсер
        parse(html, function(data){  
                //какая-нибудь функция, добавляющая данные в базу
		addToDatabase(data, function() {  
			doSomething();
		})
	});

    });
});


Много вложенных колбеков — не есть гуд, пробуем по-другому.
Читать дальше →

Процесс изготовления печатной платы на дому

Reading time3 min
Views154K

Введение


Кому не приходилось изготавливать печатную плату? Дело это не очень сложное, а результат придаёт проекту завершённость. В этом посте я бы хотел рассказать о процессе создания печатной платы на дому. Я опишу фоторезистивный метод создания платы. Он довольно прост в применении и позволяет печатать весьма сложные платы. Более того, я обошёлся струйным принтером.

Пост содержит фотографии, видео и схемы.
Читать дальше →

WPF4 и Taskbar в Windows 7: Кнопки предпросмотра(Thumbnail buttons)

Reading time15 min
Views2.5K
У панели задач Windows 7 есть много способов для приложений предоставлять уникальную информацию чтобы сделать UX ещё круче. Одна из них рассматривается в этой статье — кнопки панели предсмотра на таскбаре.

Существует вероятность что вы уже используете несколько приложений использующих эту функциональность. Вот скриншот приложения Zune с 4мя кнопками предпросмотра.


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

Невероятные приключения с Microsoft.Practices.Unity

Reading time3 min
Views5.9K
Речь пойдет не о возможностях и вкусностях использования АОП, а об одном личном случае использования Unity в своем проекте.

Немного предыстории


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

Собственно история


И вот, в один прекрасный момент, после применения очередного обновления. У далекого клиента в г. Омск стали наблюдаться странные «тормоза» при запуске нашего приложения. Программа висела примерно 30-40 секунд, потом успешно запускалась и в дальнейшем работала с привычным для нас быстродействием.
Хм… Стал смотреть код.
Читать дальше →

Обновления Live Tiles в фоновых агентах

Reading time7 min
Views4.7K

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

Одна из ключевых концепций – Live Tiles или «живые тайлы» — «иконки приложений на стероидах». Правильное использование Live Tiles привязывает пользователя к приложению и даёт совсем другие ощущения при использовании. Например, когда я выбирал приложение для прогноза погоды, ключевым критерием для меня являлось то, чтобы приложение имело Live Tile и оперативно обновляло прогноз. В результате, после настройки приложения и закрепления Live Tile на стартовом экране, я практически больше это приложение не запускал, но при этом, сразу же после снятия лок-скрина вижу оперативную информацию о погоде.

Хороший пример, подумаете вы, но как нам сделать так?
Читать дальше →

История стартапа Questli: на глобальный рынок из Сибири

Reading time2 min
Views956
Есть мнение, что если у вас качественный продукт, то инвестор на него найдется сам. Но я хотела бы добавить, что в случае, когда вы из Сибири и вам нужна еще и толика удачи, чтобы оказаться в нужное время в нужном месте и попросту не ступить.

Сегодня я расскажу историю об одном герое из города Новосибирск, которого зовут Данила Козятников. Он является основателем проекта Questli.com – краудсорсинговой веб платформы, где при выполнении заданий (квестов) вы можете зарабатывать деньги.

Данила — предприимчивый молодой человек, в 2010 году получил подарок судьбы в виде бесплатного билета на Le Web 2010 (это был последний билет в розыгрыше того года). И все. На этом удача закончилась, и начались трудовые будни. Потому как именно благодаря проделанной домашней работе Данила и его команда смогли добиться таких потрясающих результатов, получить награду Audience Choice Award на TechCrunch Disrupt 2011 и стать спикерами на Le Web 2011 в Париже.


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

Создание плагина для WordPress — Видеоуроки

Reading time1 min
Views64K
Видеоуроки по созданию плагина для WordPress

Приветствую вас, уважаемый хабрачеловек!

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

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

Из видеокурса вы узанаете:
  • С чего начать разработку плагина.
  • Что такое хуки, экшены и фильтры.
  • Как сделать страницу настроек плагина в админке блога.
  • Принципы программирования на PHP функционала плагина.


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

Пишем ГОСТ криптопровайдер

Reading time18 min
Views40K
рис.1
Секреты создания CSP для Windows раскрыты в статье Ю.С.Зырянова.

Российские криптоалгоритмы ГОСТ реализованы в OpenSSL Gost.

Удивлен, что на просторах Интернета не удалось найти подтверждения, что кем-то был создан интерфейс криптопровайдера ГОСТ под Windows с использованием вышеприведенных инструментов.

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

Создание графических примитивов на Ассемблере

Reading time7 min
Views44K
Хотелось бы рассмотреть что-то интересное и полезное вплане использования, поэтому выбор пал на ассемблер, а именно на создание примитивной графики.

Язык ассемблер — это низкоуровневый язык программирования или же программа, которая исходный текст программы, написанный на языке ассемблера, переводит в программу на машинный язык. Язык, по некоторым меркам сложный, но ведь создание примитивов графики берет начало именно тут. Я же хочу рассмотреть ассемблер под Windows, а именно MASM, который, на ряду с Visual Studio, не так давно использовал для создания графических примитивов. Об этом с иллюстрациями и подробностями
Читать дальше →

Кухонный компьютерный стол

Reading time3 min
Views63K
image

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

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

Перехват вызовов API-функций

Reading time11 min
Views75K
— Папа, я бежал за троллейбусом и сэкономил пять копеек!
— Сынок, бежал бы за такси — сэкономил бы пять рублей!


Сегодня я хочу рассказать вам, как сэкономить 10 тысяч долларов. А заодно, что гораздо менее интересно – научить перехватывать вызовы Win32 API функций, и не только. Хотя, в первую очередь – конечно, именно их.
Читать дальше →

Silverlight 5 Released!

Reading time1 min
Views5.1K
Microsoft выпустили Silverlight 5. Поддержка будет производиться до 2021 года.



Установочный файл Silverlight 5 весит меньше 7МБ и устанавливается за 10 секунд. В него добавили много вкусного и полезного.
Читать дальше →

StartFellows – бесплатный грант для интернет-стартапов

Reading time1 min
Views808
Пока страна точит вилы и освобождает стеклотару под коктейли Молотова, некоторые люди пытаются созидать или помогать тем, кто созидает.

Так например не далее как вчерашним вечером Павел Дуров и Юрий Мильнер анонсировали свой проект по безвозмездному финансированию софтверных стартапов.

Обещают выборочно давать ~$25.000 и не просить ничего взамен.

Ката не будет. Вот ссылка на сайт меценатов.
Вот страница «на сайте Павла».
И вот интервью, которое взял у Павла Дурова @nickolaykononov.

Вроде всё просто и круто.

Сборщик мусора в среде .NET

Reading time5 min
Views75K
Здравствуйте, Великие и Ужасные хабражители!
Как я недавно узнал, не так много народу знает о том, как работает сборщик мусора. Хотя я понимаю, что 99% разработчиков это не особо нужно, но я хотел бы, чтобы все, кто разрабатывают приложения на .NET, знали принцип его работы. В этой статье я постараюсь вкратце рассказать, как собственно работает сборщик мусора.

Базовые сведения о времени жизни объекта


Как известно, при инициализации объекта в памяти выделяет нужное под объект место. Использование ключевого слова new приводит к добавление объекта класса в так называемую управляемую кучу, а назад возвращается ссылка на объект.
При создании приложений на C# можно смело полагать, что исполняющая среда .NET будет сама заботиться об управляющей куче без непосредственного вмешательства со стороны программиста. На самом деле "золотое правило" по управлению памятью звучит так:
Размещайте объект в управляющей куче с помощью ключевого слова new и забывайте об этом.

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

Общественный контроль за выборами с помощью облачных ИТ

Reading time2 min
Views950
Прошедшие выборы оставили довольно жуткое впечатление — массовые подмены результатов на уровне избирательный комиссий (http://cifidiol.livejournal.com/1600.html, и других ссылок много)
Надеяться, что ситуация будет как-то исправлена власть предержащими, довольно глупо — про таких людей моя бабушка говорит «Ссы в глаза, скажут — божья роса».
Ничего не делать вроде как тоже стыдно, а ходить на митинги и получать прикладом под ребро от военных, которым очень удачно повысили зарплату в 2-3 раза — лично мне не позволяет ответственность перед семьей и собственным будущим.
В связи с этим возникла идея создания ресурса, который бы контролировал волеизъявление конкретных людей. Каждый голосующий, если он не боится открыто заявить о своей гражданской позиции, в момент перед отправкой бюллетеня в урну делает снимок своего бюллетеня вместе с раскрытым паспортом, и отправляет данные на сервер — через мобильное приложение или через upload, с указанием номера участка, времени голосования, может быть, еще каких-нибудь данных.
Читать дальше →

Фонарик для Windows Phone 7

Reading time4 min
Views4.6K

Предисловие


Купил себе виндофон и решил попробовать написать что-нибудь под него, тем более, что с .NET знаком по роду деятельности. Идею подсказал товарищ с android-приложением фонарик, источником света которого являлась LED вспышка.
Пришлось финтить ушами

Information

Rating
Does not participate
Location
Ростов-на-Дону, Ростовская обл., Россия
Date of birth
Registered
Activity