Pull to refresh
4
0
Alex Zaytsev @alexanderzaytsev

User

Send message

Устранение дублирования Where Expressions в приложении

Reading time4 min
Views21K
Допустим, у вас есть товары и категории. В какой-то момент клиент сообщает, что для категорий с рейтингом > 50 необходимо использовать другие бизнес-процессы. У вас достаточно опыта и вы понимаете, что где сегодня 50 завтра будет 127.37 и хотите избежать появления магических чисел в коде, поэтому делаете так:

    public class Category : HasIdBase<int>
    {
        public static readonly Expression<Func<Category, bool>> NiceRating = x => x.Rating > 50;

       //...
    }

    var niceCategories = db.Query<Category>.Where(Category.NiceRating);

К сожалению, этот номер не пройдет, если вы хотите выбрать продукты из соответствующих категорий, потому что NiceRating имеет тип Expression<Func<Category, bool>>, а в случае с Product нам потребуется Expression<Func<Product, bool>>. То есть, необходимо осуществить преобразование Expression<Func<Category, bool>> => Expression<Func<Product, bool>>.

    public class Product: HasIdBase<int>
    {
        public virtual Category Category { get; set; }

       //...
    }

    var niceProductsCompilationError = db.Query<Product>.Where(Category.NiceRating); // так нельзя!

К счастью, осуществить это довольно просто!
Код под катом
Total votes 22: ↑18 and ↓4+14
Comments82

Большая Перекачка, или Вперед к кайнозою

Reading time5 min
Views43K
80 млн. лет назад, на рубеже мезозоя и кайнозоя, Земля находилась с одном из благоприятнейших своих состояний — широты Сибири и Аляски входили в субтропическую зону, арктические острова и Антарктида были покрыты лесами. Все что нужно, чтобы вернуться к этому состоянию — восстановить кайнозойский водообмен полярного бассейна с экваториальными морями.

Для реализации своего плана автор (инженер Петр Борисов) в 1960-х годах предложил построить поперек Берингова пролива плотину.

Читать дальше →
Total votes 65: ↑65 and ↓0+65
Comments271

Программисты на C — самый большой разделённый народ в мире?

Reading time1 min
Views64K
Сегодня, 26 апреля 2016 г., арбитражный суд Орловской области должен был решить вопрос, является ли язык программирования C иностранным языком.

Столь необычным вопросом суд озаботился из-за Федеральной антимонопольной службы (ФАС), которая возбудилась вот на это объявление, размещённое напротив местного политеха:

image
Читать дальше →
Total votes 146: ↑138 and ↓8+130
Comments354

45-летняя женщина утверждает, что прошла первую в мире генную терапию против старения

Reading time2 min
Views63K
image
Теломеры отмечены зелёным цветом

Элизабет Пэрриш [Elizabeth Parrish], жительница Сиэтла, 45-и лет, директор стартапа со специализацией на биотехнологиях BioViva утверждает, что успешно прошла курс генной терапии против старения. Терапия была направлена на борьбу с двумя известными и явными эффектами, связанными со старением: укорачиванием теломер и потерей мышечной массы.

Предварительно успех терапии подтвердили в техасской медицинской лаборатории SpectraCell. В сентябре 2015 года в лаборатории кровь Пэрриш была взята на анализ непосредственно перед началом терапии. Тогда медики назвали показатель длины теломер у лейкоцитов предпринимателя необычно низким – 6,71 кб (тысяч базовых пар). При этом в среднем у младенцев эта длина составляет порядка 8 кб, у взрослых может доходить до 3 кб, а у пожилых – до 1,5 кб.
Читать дальше →
Total votes 43: ↑41 and ↓2+39
Comments170

Почему некоторым людям везёт намного больше, чем другим?

Reading time7 min
Views29K
image

Известный киноактёр и телеведущий Джеймс Скотт Бамгарнер, более известный под псевдонимом Джеймс Гарнер, недавно ушёл из жизни в возрасте 86 лет. Многие люди считают, что он был великим человеком, и любят рассказывать истории про его жизнь. Как парень, не имеющий никакого актерского опыта и не любящий выступать перед публикой, смог заставить влиятельного голливудского агента заняться его карьерой? Повезло?
Читать дальше →
Total votes 17: ↑14 and ↓3+11
Comments9

Как я ошибся при написании хеш-таблицы и какие выводы из этого сделал

Reading time23 min
Views25K
Для ясности теоретического понимания нет лучшего пути, чем учиться на своих собственных ошибках, на собственном горьком опыте. (Фридрих Энгельс)

Всем привет!


Несколько недель назад мне в линкедине написал коллега и сообщил, что в моем проекте на гитхабе не совсем верно работает хеш-таблица.


Мне прислали тесты и фикс, и действительно создавалась ситуация, где система "зависала". При расследовании проблемы я понял, что допустил несколько ошибок при верификации. На Хабре тема верификации RTL-кода не слишком подробна расписана, поэтому я и решил написать статью.


Из статьи вы узнаете:


  • как можно организовать хеш-таблицу на FPGA.
  • на чём была построена верификация.
  • какие ошибки я допустил (они привели к тому, что бага не была замечена раньше).
  • как это всё можно исправить.

Добро пожаловать под кат!

Читать дальше →
Total votes 39: ↑37 and ↓2+35
Comments9

Что писать в карточках, если товары одинаковые?

Reading time5 min
Views21K


Привет! Я продолжаю рассказывать про буквы в блоге Михаила, владельца Текстброкера.

Предположим, у вас есть интернет-магазин, а у него внутри – карточки товаров. И товары бывают двух тяжелых категорий:
  • Те, у которых дофига неуникального текста (например, теххарактеристики телефонов, инструкции медицинских препаратов), и непонятно, как быть с SEO.
  • Те, которые имеют артикулы ####0001, ####0002, ####0003… ####0050 и так далее, то есть отличаются какими-то совершенно нереальными мелочами вроде цвета. Пример – 180 моделей очаровательных трусиков. К сожалению, очаровательны они для райтера только первые десять раз.

Давайте посмотрим, что делать.
Читать дальше →
Total votes 14: ↑14 and ↓0+14
Comments16

Расшифровка обновлений одного популярного сотового модема: метод Дмитрия Склярова

Reading time7 min
Views20K


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

Название производителя модема убрано, и некоторые имена файлов специально изменены, так как хочется заострить внимание на самой задаче — и на интересном подходе к ее решению. Кстати, в последних моделях модемов этого производителя такой метод уже не работает. Но не исключено, что он может быть использован и в других случаях.
Читать дальше →
Total votes 47: ↑46 and ↓1+45
Comments14

Взломать PayPal за 73 секунды

Reading time3 min
Views77K
image

В декабре 2015 года я обнаружил критически опасную уязвимость в одном из сайтов PayPal для бизнеса, которая позволяла мне выполнять произвольные команды на веб-серверах внутри корпоративной сети. При отправке веб-формы на сайте manager.paypal.com в одном из скрытых параметров передавались закодированные данные в виде сериализованного объекта Java. Данный параметр можно было подделать, изменив название класса и значения его свойств, что и привело к выполнению произвольного кода на серверах. Я немедленно сообщил об этой проблеме в PayPal, и она была быстро исправлена.
Читать дальше →
Total votes 67: ↑64 and ↓3+61
Comments30

История одной IT-компании, которая так и не пришла к успеху (Ч.3)

Reading time18 min
Views20K

Пролонгация


Денежная инфекция поражает воображение. © Павел Шарпп

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


Читать дальше →
Total votes 13: ↑13 and ↓0+13
Comments7

Chrome Cleanup Tool: программа для очистки Chrome от мусора

Reading time1 min
Views53K


Компания Google выпустила очень полезную программу Chrome Cleanup Tool (под Windows) — инструмент очистки Chrome. Программа чиcтит браузер и удаляет ненужных «паразитов», malware и подозрительный сторонний софт, такой как Mail.ru Sputnik/Guard (полный список под катом), из-за которого браузер тормозит и зависает.
Читать дальше →
Total votes 26: ↑15 and ↓11+4
Comments15

Два $ в час

Reading time2 min
Views49K
В этой статье нет ни одной ссылки (с) Х. Т. Меэль

Один мой знакомый, асоциальный тип, жено- и С++ ненавистник, увлекся разработкой игр под iOS. Уже лет 7 занимается этим опьяняющим делом. Раз в год он присылает мне отчеты о доходах, и позволяет поделиться ими с уважаемым сообществом.

Сразу скажу — в 2015 году и первом месяце 2016 года практически ничего не изменилось.
Схема заработка примитивна. Это —

  1. Доход от платных $1 приложений;
  2. Доход от бесплатных приложений, в которых размещены баннеры от Google (adMob реклама);
  3. Доход от бесплатных приложений, в которых размещены полноэкранные заставки от Chartboost;
  4. **Новинка** Доход от бесплатных приложений, в которых используется реклама от медиатора Appodeal.

Подробности на картинках с цифрами.
Читать дальше →
Total votes 39: ↑34 and ↓5+29
Comments55

Почему биткоин провалился: окончание эксперимента с биткоинами

Reading time14 min
Views97K
Я провел более пяти лет в роли разработчика системы биткоин. Миллионы пользователей и сотни разработчиков использовали мои программы, а мои лекции привели к созданию нескольких стартапов. Я рассказывал про биткоин на Sky TV и BBC News. Меня цитировали в Economist в качестве эксперта по биткоинам и известного разработчика. Я объяснял эту тему для SEC, банкирам и обычным людям в кафе.

И с самого начала я утверждал, что биткоин – это эксперимент, и как любой эксперимент, он может провалиться. Не инвестируйте то, что вы не готовы потерять. Я говорил об этом в интервью, на докладах и писал в почте. Как делали и другие известные разработчики – Гевин Андресен и Джефф Гарзик.

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

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

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

  • не может передавать существующие у вас средства
  • имеет непредсказуемые комиссии за переводы, которые быстро растут
  • позволяет покупателям отменять платежи после выхода из магазина простым нажатием кнопки (если вы не в курсе этой «возможности» – это потому, что биткоин её только что ввела)
  • страдает невыполненными и нестабильными платежами
  • контролируется Китаем
  • в которой компании и люди, участвующие в её развитии, находятся в фазе гражданской войны


Рискну предположить, что ответ будет «нет».
Читать дальше →
Total votes 74: ↑64 and ↓10+54
Comments77

Определение пола по ФИО – когда точность действительно важна

Reading time7 min
Views43K
Некоторое время назад меня заинтересовала задача определения пола человека по его ФИО. В тот момент я работал в области медицинского страхования, где эта проблема была действительно актуальна – расходы на одного застрахованного, а значит и тарифы, по которым людей принимали на страхование, в зависимости от пола клиента, могли отличаться в несколько раз. Большая часть договоров – корпоративные, застрахованные являются сотрудниками работодателя.

Мы никогда не видели большинство из них в глаза, все, что мы имели – списки застрахованных, где пол иногда был указан (с большим количеством ошибок), но чаще – не указан вообще. Большинство компаний имеют свою специфику работы и профессиональные традиции, в силу чего, в их коллективах преобладают люди одного пола. Даже небольшая ошибка могла сделать потенциально прибыльный договор убыточным (или наоборот, но на такое, по странному стечению обстоятельств, случалось с нашими клиентами гораздо реже). В целом, при объеме портфеля договоров в несколько миллиардов, и характерном количестве ошибок около процента, цена корректного определения пола по ФИО была в районе нескольких десятков миллионов.
Читать дальше →
Total votes 38: ↑32 and ↓6+26
Comments57

Восход разработчикономики

Reading time10 min
Views62K
От переводчика
Почитывая несколько лет назад журнал "Форбс", я наткнулся на статью, которую нашёл крайне интересной. Ну, знаете как бывает — читаешь, читаешь, и на каждом абзаце воскликаешь: «О! Це ж про меня!». Не мог поверить, что я один такой, и никто не сподобится уж если не перевести, то хотя бы сослаться на неё в русскоязычной прессе. Однако за четыре года этого так и не произошло. Ну что ж, «хочешь сделать что-то правильно — сделай это сам», посему предоставляю вниманию почтенной публики первую половину статьи. (Стараюсь переводить художественно, поэтому работа двигается небыстро; размер оригинала — больше 30 килобайт, и, «земную жизнь пройдя до половины», я понял, что держаться нету больше сил.)

P.S. Так и не смог разобраться, как поставить в заголовке тег «перевод».

Восход разработчикономики


Статья Венкатеша Рао опубликована в декабре 2011 года в журнале «Форбс».

В эволюционной биологии существует теория, согласно которой взаимный альтруизм и сотрудничество возникли как решение проблемы хранения еды. Если вам, раннему гоминиду, посчастливилось завалить крупного мамонта, у вас не было ни малейшего шанса умять его целиком до того, как он протухнет. Тогда вы делились едой: лучшим вложением для избыточного капитала было вложение в желудок вашего приятеля. В этом случае вы могли потребовать возврата вклада в тот раз, когда мамонта завалит уже этот самый приятель.
Читать дальше →
Total votes 37: ↑31 and ↓6+25
Comments76

«Roslyn — еще очень сырая технология» — интервью с Сергеем Шкредовым, руководителем .NET-направления в JetBrains

Reading time24 min
Views31K
Привет, это снова Без слайдов. Я Алексей Федоров, и на этот раз в гостях у меня побывал Сергей Шкредов, руководитель всего .NET-направления в компании JetBrains.



С Сергеем мы говорили:
  • о последних релизах ReSharer;
  • о новой схеме подписок и лицензий;
  • про непростые отношения с Microsoft;
  • о рантайме и развитии языка;
  • о том, как поменял ситуацию выход Roslyn;
  • о работе с фидбеком пользователей для улучшения продукта;
  • о планах развития других продуктов .NET стека;
  • о важности внутриотраслевого общения и обмена опытом;
  • про разработку продуктов для С++;
  • немного о ReSharper C++, на который должны подсесть даже разработчики Microsoft;
  • О том, как пользователи почувствуют изменения;
  • Как ReSharper будет развиваться дальше.


Вот видео



Под катом — текстовый вариант интервью.

Читать интервью...
Total votes 55: ↑51 and ↓4+47
Comments69

«ВКонтакте» не только не платит пользователям за найденные уязвимости, но и не рассматривает их

Reading time4 min
Views90K
По моему скромному мнению, баги из разряда банальных SQL инъекций в GET параметрах и выполнение команд через пайп уходят в далёкое прошлое. Различные фреймворки разрабатывающиеся десятками и сотнями людей, автоматизированное тестирование и лучшие практики программирования практически не оставляют шансов на то, что в начале двухтысячных являлось обыденностью. На мой взгляд, текущее время это пора гонок условий, логических багов, мисконфигураций и конечно же XSS. Которые приводят к различным серьёзным последствиям.

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

Подробности
Total votes 118: ↑108 and ↓10+98
Comments69

Я хочу, чтобы сайты открывались мгновенно

Reading time10 min
Views139K
Здравствуйте, меня зовут Александр Зеленин и я веб-разработчик. Я расскажу, как сделать так, чтобы ваш сайт открывался быстро. Очень быстро.


Я хочу, чтобы мой сайт открывался быстро
Total votes 130: ↑122 and ↓8+114
Comments87

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

Reading time3 min
Views37K
Недавняя хабрастатья о различиях в побайтово идентичных файлах вызвала из глубин памяти (и почтового ящика) небольшой кусочек моей переписки с одним из инженеров, отвечавших в то время за линию дисков MPG в компании Fujitsu. Для удобства англонеговорящих читателей, привожу перевод с английского под катом.

Читать дальше →
Total votes 53: ↑52 and ↓1+51
Comments74

Как я искал (и нашел) разницу в двух побайтово идентичных файлах

Reading time4 min
Views72K
Есть у нас одно .NET-приложение, которое умеет загружать и использовать плагины. Плагины — дело хорошее. Можно функционал расширять, можно оперативненько обновлять их со своего сайта, можно даже юзерам дать SDK и позволить писать свои плагины. Мы всё это и делали. Наши плагины представляли собой обычные .NET-сборки, которые нужно было подкинуть в определённую папку, откуда основное приложения их загружало и использовало. Ну, вы, наверное представляете как — Assembly.Load(), дальше ищем класс, реализующий необходимый интерфейс, создаём объект этого класса и т.д. Всё это работало давно, стабильно и ничто не предвещало беды. Но вдруг в какой-то момент появилась необходимость создать плагин, состоящий из нескольких файлов. В связи с этим было решено считать плагином не просто .NET-сборку (1 файл), а zip-архив, в котором может быть как одна сборка, так и несколько файлов. В связи с этим пришлось научить билд-сервер паковать плагины в архивы, а основное приложение — разархивировать их в нужное место. В общем-то задача на 10 строк кода. Ничто не предвещало беды. И вот скачиваю я с билд-сервера собранный архив с плагином, разархивирую его в нужную папку, запускаю приложение, и… не работает! Стоп, как не работает? Это ведь тот же плагин!

Дальше — больше. Прошу проделать ту же самую процедуру моего коллегу, на его компьютере. Он пробует — и у него всё работает! Но как же так? Одна версия приложения, один и тот же файл с билд-сервера. Какая-то разница в окружении? Сажусь за компьютер коллеги, пробую ещё раз — не работает! Он в этом время пробует на моём — работает! То есть получается, что файл «помнит», кто его разархивировал! Зовём третьего коллегу понаблюдать этот цирк. Последовательно, на одном и том же компьютере, по очереди делаем одни и те же действия: скачиваем архив с плагином, разархивируем в нужную папку, запускаем приложение. Когда это делаю я — программа не видит плагин, когда это делает коллега — всё работает. На третьем круге этих интересных экспериментов вдруг замечаем разницу в действиях: я разархивировал плагин стандартными средствами Windows, а мой коллега — с помощью 7-Zip. И то и другое вызывалось нами из контекстного меню архива, так что разницу в клик по не тому пункту вначале никто не замечал. Ну ок. Получается, файл, извлечённый из zip-архива с помощью 7-zip, отличается от того же файла из того же архива, извлечённого с помощью стандартного архиватора Windows?

Кстати, пока вы не открыли статью под катом, ответьте-ка сами для себя на вопрос, может ли такое быть, что содержимое файлов валидного zip-архива при разархивации 7-zip и через проводник Windows будет разным?
Читать дальше →
Total votes 189: ↑176 and ↓13+163
Comments88
1
23 ...

Information

Rating
Does not participate
Location
Новая Зеландия
Date of birth
Registered
Activity