Search
Write a publication
Pull to refresh
4
0
Александр @Weageoo

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

Send message

CXXI: Мост между мирами C# и C++

Reading time7 min
Views42K
В рантайме Mono есть немало средств для взаимодействия с кодом на не .NET языках, но никогда не было ничего вменяемого для взаимодействия с кодом на C++.

Но это вскоре изменится благодаря работе Алекса Коррадо, Андрэа Гайта и Зольтана Варга.

Вкратце, новая технология позволяет разработчикам C#/.NET:

  • Легко и прозрачно использовать классы C++ из C# или любого иного .NET языка
  • Создавать экземпляры классов C++ из C#
  • Вызывать методы классов C++ из кода на C#
  • Вызывать инлайн-методы C++ из кода на C# (при условии, что библиотека скомпилирована с флагом -fkeep-inline-functions или если вы скомпилируете дополнительную библиотеку с их реализациями)
  • Наследовать классы C++ из C#
  • Переопределять виртуальные методы классов C++ методами на C#
  • Использовать экземпляры таких смешанных C++/C# классов как в коде на C#, так и в коде на C++

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

Подробно о свойстве float

Reading time4 min
Views218K
Правильное использование CSS свойства float может стать непростой задачей даже для опытного верстальщика. В этой статье собраны варианты применения float, а также некоторые ошибки, с наглядными примерами.

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

Функциональное программирование для всех

Reading time33 min
Views354K

Доброго времени суток. Это статья — перевод заинтересовавшего меня поста в блоге аспиранта Университета штата Нью-Йорк в Стоуни-Брук. Статья в доступной форме описывает основные концепции функционального программирования, их преимущества и недостатки. Думаю она будет полезна широкому кругу читателей, которые сомневаются, нужно ли им углубляться в мир функционального программирования или нет. Пожелания, предложения и замечания по переводу и терминологии принимаются по личной почте.

Мнение переводчика может иногда не совпадать с мнением автора, но переводить статью было крайне занимательно.

UPD: альтернативный вариант перевода вы можете найти на rsdn (спасибо flamingo за ссылку).
Читать дальше →

Новая Главная портала Mail.Ru

Reading time10 min
Views44K
Думаю, многие из вас хоть раз видели старую главную страницу Mail.Ru, которая довольно долго не менялась. Поэтому для общего понимания, небольшая преамбула: технический апдейт, о котором пойдет речь в этом посте, стал возможен после внутренних изменений в компании.



Разработкой новой главной занималась довольно большая команда: в нее входили дизайнеры, специалисты по юзабилити и, конечно, разработчики, среди которых я и note.
Читать дальше →

SkypeKit вылечен от жадности

Reading time6 min
Views18K
image

Вниманием!
Не пользуйтесь этим скайпкитом!
После этой истории
habrahabr.ru/post/142805 скайп начал банить ВСЕ аккаунты запущенные на одном айпи вместе с этим скайпкитом.



Есть такая замечательная штука как Skypekit. В двух словах это полноценный Skype без GUI, обёртку для которого предполагается написать самому.

Теоретически на основе Skypekit можно было бы:
  • Создавать полноценные Skype-клиенты под все платформы
  • Добавить поддержку Skype в мультипротокольные клиенты
  • Запускать Skype на сервере для интеграции с SIP/Flash

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

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

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

Code-first в Entity Framework

Reading time4 min
Views56K
Into

Под .NET существует две родных ORM, разрабатываемых и поддерживаемых Microsoft, — Entity Framework и Linq2Sql. Однако Entity Framework продолжает развиваться внушительными темпами, а про будущее Linq2Sql ничего толком неизвестно.

Entity Framework предлагает удобный дизайнер, огромное количество вариантов маппинга, автогенерацию классов-моделей, но на все это есть жирный минус – гигантские и раздутые сгенерированные классы, которые к тому же нельзя изменять вручную – ибо при каждом изменении модели в дизайнере, все будет пересоздано заново. Сравните это с чистыми классами, и добавленными к ним атрибутами, как в Linq2Sql, и вы поймете, почему такое количество людей заявляет о легковесности Linq2Sql и монструозности EF.

Конечно, каждая проблема имеет решение, и эта не исключение. Частичные классы позволят добавить нужный функционал, а специально созданные классы с правилами валидации, помеченные атрибутом [MetadataType], дадут возможность использовать атрибуты валидации для классов-моделей. Но вместе это получается не очень красиво – размазанные по проекту классы, увеличение их количества, и все та же сложность в поддержке.

Не стоит также забывать об условиях работы классов-моделей: они должны либо наследоваться от EntityObject или реализовывать интерфейсы EntityWithKey, IEntityWithChangeTracker и IEntityWithRelationships

Так что же делать тем, кто хочет получить максимально простые классы для работы внутри ORM?
Читать дальше →

Twisted в действии — memcache на python

Reading time8 min
Views7.5K

Преамбула


В связи с выходными потратил немного времени на реализацию сервера Memcache с использованием python-фреймворка Twisted. В итоге я получил быстродействие в два раза более низкое, что я не считаю очень критичным, а также возможность реализовать парочку расширений оригинального протокола. Также возможны оптимизации, которые еще улучшат быстродействие.
Протокол не был реализован полностью — есть еще моменты над которыми можно поработать, но стандартные set/get вполне работоспособны и готовы к использованию.

Средства


Для хранения кеша используем базовый класс dict. Как вы догадываетесь, реализация dict в python быстра, этот базовый тип используется в python настолько активно, что его не оставили без детальной оптимизации. Таким образом, мы автоматом имеем структуру для хранения кеша в памяти. Осталось реализовать протокол memcache, для предоставления доступа к dict другим программам.

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

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

Написание макроса-бота для браузерной игры

Reading time8 min
Views53K

Введение


Не так давно на Google+ появились игры. Прочитав топик об этом, я решил во что нибудь поиграть. Выбор пал на игру Diamond Dash. Через некоторое время игры программист во мне заговорил, что однотипные действия нужно автоматизировать. И вот что из этого вышло…

*Примечание: «руками» даже опытному игроку сложно набрать больше 400к

Раньше я никогда не сталкивался с задачами работы с экраном и мышкой. После непродолжительного гугления было решено для решения использовать язык макросов AutoIt.
Под катом вы найдете краткое описание игры, мой способ распознавания поля, алгоритм определения точки нажатия, и некоторое количество оптимизаций. А так же ссылку на github-репозиторий скрипта.
UPD Добавлено видео работы скрипта.
Читать дальше →

Новый канал Simple-Science — простые опыты и эксперименты

Reading time1 min
Views128K
image image image image image image

Меньше месяца назад мы открыли канал на YouTube, который назвали Simple-Science, что в переводе с английского «Простая наука». Пока выкладываем ролики с довольно простыми опытами, но готовим все более и более любопытные.

Будем рады вашим советам для будущих опытов и экспериментов.

Несколько роликов под катом:
Читать дальше →

Пишем простое Opera-расширение

Reading time7 min
Views23K
Эта статья посвящена написанию простого расширения для браузера Opera. Наше расширение будет примитивным, т.к. весь его функционал будет заключаться в user-JS для habrahabr.ru. Лента комментариев оснащена блоком, который отображает количество новых комментариев в топику и кнопку, позволяющую эту ленту обновить. Давайте добавим туда стрелки для навигации по новым комментариям.

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

Работа с Command Line в .Net

Reading time4 min
Views17K
Добрый день сообщество,

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

Мне кажется, что этой, на первый взгляд, банальной теме уделяется мало внимания. В этой статье я хотел бы поделится опытом работы с Command Line в .Net.
Читать дальше →

Переменные в CSS

Reading time2 min
Views49K
Если вы разработчик, то вы точно хорошо знакомы с переменными, и возможно, они одни из ваших лучших друзей. По определению, переменная — это временное хранилище, которое содержит некое значение величины или информации.
Но каким образом это относится к тому CSS, который мы все знаем? Год назад на Хабре был пост о планируемых новшествах в CSS, которые были оглашены членом рабочей группы CSS и команды Google Chrome. Среди этих новшеств было введение поддержки переменных.
И вот, буквально на днях, поступили новости о выходе первого релиза рабочего черновика CSS Переменных (CSS Variables).


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

Карты в браузере без сети

Reading time8 min
Views28K

Вступление


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

Посмотрев на другие приложения на моем телефоне, я заметил, что они в лучшем случае кэшируют части карты, которые были загружены до этого. Это могло бы отчасти помочь мне, но не решало проблему полностью. После этого я задумался, стоит ли иметь возможность просматривать карту офлайн. Так как мое приложение не родное, а основанное на phonegap, те браузерное, то и рассказ будет о том, как можно кэшировать карту для браузерных приложений в частности используя google map api v3.
Читать дальше →

Полуавтоматическая конвертация лени в код

Reading time7 min
Views6.6K
Всем доброго дня. Сегодня я хочу поговорить об автоматической генерации кода C#. Например, свойства в классах, описывающих сущности предметной области, обычно описываются по совершенно одинаковой схеме. И мне элементарно лениво писать для каждого примитивного свойства одинаковые конструкции. Немного спасает применение сниппетов и активных шаблонов, но когда приходит нужда что-то поменять в этой схеме, то приходится перелопачивать кучу кода. Так почему бы это однообразие не генерировать автоматически в процессе сборки?
В какой-то момент кинетическая энергия творчества ненадолго пересилила потенциальную энергию лени, и результатом этого стала маленькая библиотечка для автоматической генерации некоторых исходных файлов программы на основе внешних данных. Приглашаю под кат всех ленивых (в хорошем смысле этого слова) разработчиков на C#.
Читать дальше →

EQализация: устранение частотных конфликтов

Reading time7 min
Views43K

Начнем с того, что


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

Пара слов о слуховой маскировке

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

Есть проблема? Найди решение!

К превеликому счастью решение уже давно нашли и без нас, так что нам остается только пожинать плоды и радоваться. Решение это — эквализация.
Читать дальше →

Организация шаринга файлов в приложении на С#

Reading time3 min
Views2.5K
Недавно мне пришлось работать над интересным проектом, в котором заказчик просил реализовать обмен файлами через интернет, соответственно с прямым доступом прямо из приложения.

Основные требования:
  • Отображение списка файлов.
  • Загрузка и скачивание через интерфейс программы.
  • Скрытая авторизация без участия пользователя.

Первое что пришло на ум — использовать облачное хранилище данных с доступом по API. Итак, что из этого вышло?

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

Взлом программ для чайников

Reading time5 min
Views493K
Disclaimer: всё ниженаписанное написано исключительно с просветительскими и исследовательскими целями, а также понимания механизмов защиты от взлома. Автор ни в коем случае не рекомендует использовать данную информацию для взлома программ.

В данной статье я хочу рассказать про три с половиной основных способа взлома программ на .NET, цель, которую я преследую — помочь разработчикам лучше понять механизмы защиты своих программ, т.е. выяснить наиболее очевидные угрозы и предпринять соответствующие меры (или не принимать).

Я не буду углубляться в детали и использовать сложные инструменты для взлома. Всё будет расписано «для чайников», т.е. все инструменты будут простыми, легкодоступными и бесплатными. А основным будет Reflector, декомпилятор программ под .NET

В качестве подопытного кролика я выбрал Expresso — анализатор регулярных выражений. Данная программа бесплатная, в лицензии вроде бы ничего не указано про взлом, но при этом без регистрации она будет работать всего 60 дней. Другими словами, вред от взлома данной программы минимальный, к тому же внутреннее её устройство очень уж хорошо подходит для тренировки. Буду надеяться, что автор данной программы не обидится на меня.
Читать дальше →

Alice — REST Мониторинг RabbitMQ

Reading time2 min
Views4.5K
Собственно столкнулся с проблемой, что при использовании RabbitMQ необходимо мониторить сервер. Системную утилиту rabbitmqctl можно запускать из командной строки, но запустить ее из приложения не получилось. Что-то связанное с окружением эрланга.

После небольшого гугления и общения в целевых форумал получил заветную ссылку

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

далее кр описание…
Читать дальше →

Набор полезных утилит и библиотек мира .NET

Reading time2 min
Views4.9K
Довольно часто так бывает что кто-то когда-то сделал прекрасную вещь, а она либо никем так и не была найдена, либо быстро забыта. Потихоньку я буду стараться предоставлять в серии топиков информацию по различным проектам, на которые стоит обратить внимание. Многие из них специфичны. И тем еще более интересны.

IL Stub Diagnostic Tool



IL заглушки (stubs) динамически генерируются во время работы приложения на лету и управляют маршаллингом и вызовом целевого метода. IL Stub Diagnostic tool была создана чтобы улучшить качество отладки приложений. Это real-time монитор, который показывает детали каждой IL заглушки, создаваемой в исследуемом процессе. Для каждой заглушки утилита показывает ее IL код и сигнатуры Managed/Unmanaged методов
Читать дальше →

Использование ORM при разработке корпоративных приложений

Reading time9 min
Views16K
Есть много споров о плюсах и минусах ORM, попробуем сделать акцент на плюсах при его использовании в ERP приложениях.

Я 5 лет разрабатываю платформу для ERP, разработал три версии платформы. Всё начиналось с EAV, после была нормальная модель, хранимые процедуры, view-хи, и сейчас эволюционировало до использования ORM. Позвольте поделиться опытом, почему ORM — хорошо.

Для демонстрации преимуществ такого подхода я разработал небольшое приложение для риэлтерского агентства (вдохновение черпал из Циан, из него же и модель данных) и попробую описать, почему благодаря ORM я все сделал за 1 день.

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

Information

Rating
Does not participate
Location
Минск, Минская обл., Беларусь
Date of birth
Registered
Activity