Pull to refresh

Авторитет антивирусов и их роль в жизни разработчика

Reading time 2 min
Views 3.6K
Antivirus protection *
На днях, зайдя на один из почитаемых мною блогов torrentfreak.com, я обнаружил что Касперский его блокирует. Понятно что срабатывание было ложным, но этот случай всколыхнул массу воспоминаний о том как антивирусы намеренно или случайно бросали тень на совершенно невинные программы и сайты.

Думаю многие разработчики софта и создатели сайтов сталкивались с проблемой ложного определения антивирусами, иногда отстоять свое право быть «белым» просто, но порой упираешься в жесткую бюрократическую стену антивирусной компании. Приходится часами, днями и неделями доказывать, что ты не олень, а в это время тратить деньги, терять репутацию и нервные клетки. Если Ваша компания не мировой гигант и нет иных каналов воздействия, кроме стандартных, то можно и с ума сойти от упертости вирусных аналитиков и непробиваемости службы поддержки.
Читать дальше →
Total votes 54: ↑39 and ↓15 +24
Comments 80

qtpanel — ещё одна десктопная панель для Linux

Reading time 2 min
Views 11K
Configuring Linux *
Для начала, некоторые факты из мира десктопного линукса:
  • GNOME подхватил «планшетную болезнь». Количество фич стремительно уменьшается с каждым релизом, юзеры бегут в панике.
  • KDE — толсто, медленно, глючно, некрасиво. За 2 года, что я слежу, просветления не наступило.
  • Unity — мы хотели сделать, как у Apple, только не получилось.
  • Xfce — состоит из уныния и говна мамонта. Разработчики слоупоки.
  • LXDE — уныние и отчаяние.
Различные standalone панели и доки либо слишком уж доки (awn), либо навевают тоску и грусть своим внешним видом. Как же быть тем, кто хочет вменяемый классический десктоп в духе Windows XP, и который при этом красиво выглядит?
Не выдержав несовершенства мира, закрыл я очи написал я свою панель. Употреблять можно вместе с чем угодно, минздрав рекомендует Openbox.

Итак, скриншот:

Читать дальше →
Total votes 161: ↑107 and ↓54 +53
Comments 128

Opera 12: памяти адресной строки

Reading time 4 min
Views 8.9K
Browsers
С каждой новой версией Оперы я надеюсь на лучшее. И каждый раз — разочарование: старые достижения урезаются, новые ограничения и глюки добавляются. Отдельной темы достойна адресная строка.



Помните светлые времена, когда выпадающий список был длинным, когда URL отображался полностью, когда можно было вводить локальные адреса и не оказываться в гугле?

Доброй памяти адресной строки. Осторожно, ненависть!
Total votes 166: ↑131 and ↓35 +96
Comments 276

LINQ для PHP. Часть 1. Я его слепила из того, что было, а потом, что было, то и полюбила

Reading time 9 min
Views 7.9K
PHP *Programming *
Сказ о том, как LINQ на PHP портировали. Сравнение ныне существующих библиотек с табличками, но без графиков — прилагается.

Картинка код для привлечения внимания (картинок не дождётесь!)
echo Phinq::create($people)
  ->groupBy(function($person) { return $person->residence->region; })
  ->select(function($grouping) {
    $obj = new stdClass();
    $obj->people = $grouping;
    $obj->region = $grouping->getKey();
    return $obj;
  })->orderBy(function($obj) { return $obj->people->count(); }, true)
  ->aggregate(function($current, $next) {
    $count = $next->people->count();
    return $current . sprintf(
      "%d %s (%s) live in the %s region\n",
      $count,
      $count === 1 ? 'person' : 'people',
      $next->people->aggregate(function($current, $next) {
        if ($current !== null) {
          $current .= ', ';
        }
        return $current . sprintf('%s [%s]', $next->name, $next->residence->code);
      }),
      $next->region
    );
  });
Кто видел C# или любой функциональный язык — при виде этого шедевра закатит глаза (если они предварительно не вылетят из орбит). И, наверное, будет прав. Но можно ещё вот так:
$lowNums =
	from('$n')->in($numbers)->
	where('$n < 5')->
	store($digits)->into('digits')->
	select('$digits[$n]');
А как ещё можно? Осторожно, много текста!
Total votes 54: ↑44 and ↓10 +34
Comments 55

Проценты готовности в заголовке окна

Reading time 1 min
Views 941
Interfaces *
Утилита wget (по крайней мере, Windows-версия) отображает процент готовности закачки в заголовке окна, и это одно из её полезных качеств.

А вот 7-Zip стабильной версии 9.20 (точнее, консольная утилита 7za.exe) не делает ничего подобного — хотя, очевидно, знает процент готовности архива и даже отображает его в последней из тех строк, которые выводит в консоли. Стало быть, за темпом хода работы не уследишь, если эта часть окна не видима, закрыта другими окнами.

Но по мере устаревания Windows XP эта разница исчезает из сознания потребителей: люди привыкают вообще не видеть заголовок окна программы на её кнопке на панели задач, а видеть значок только.

И это, пожалуй, печально — но многие ли всерьёз опечалены этим?…

Я вот, скорее, досадую.
Total votes 69: ↑16 and ↓53 -37
Comments 12

Сервис OnLive закрывается?

Reading time 2 min
Views 12K
Cloud computing *


В пятницу утром на очередном собрании сотрудников сервиса OnLive, пионера облачных игр, было объявлено что компания подаёт на банкротство решила передать всё своё имущество и права управлением компанией кредиторам. (в оригинале Assignment for the Benefit of Creditors) и более 200 работников потеряли свою работу в один день.
Читать дальше →
Total votes 55: ↑44 and ↓11 +33
Comments 74

Семь лет WPF: что изменилось?

Reading time 8 min
Views 70K
Programming *.NET *C# *
Translation
Прим. перев.: это перевод статьи Six years of WPF; what's changed?, написанной 3 августа 2012 года. Сейчас WPF уже не шесть, а семь лет, однако ничего не изменилось.

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

Шесть лет назад я написал статью про валидацию в WPF на Code Project. Ещё я написал свой error provider, который поддерживает IDataErrorInfo, потому что — вы не поверите! — WPF 3.0 не поддерживал IDataErrorInfo. Позже я работал над несколькими опенсорсными WPF проектами вроде Bindable LINQ (первоначального реактивного программирования для WPF, ещё до изобретения Rx) и Magellan (MVC для WPF а-ля ASP.NET). Я даже некоторое время состоял в клубе, посвящённому превозносению MVVM и киданию ссылок на Code Project, известном как WPF Disciples («Приверженцы WPF»).

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

Вот как в далёком 2006-м году выглядела разметка относительно простого окошка (код позаимствован из проекта, над которым я тогда работал):

	<Window x:Class="PaulStovell.TrialBalance.UserInterface.MainWindow"
	  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
	  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
	  xmlns:tb="clr-namespace:PaulStovell.TrialBalance.UserInterface"
	  xmlns:tbp="clr-namespace:PaulStovell.TrialBalance.UserInterface.Providers"
	  xmlns:system="clr-namespace:System;assembly=mscorlib"
	  Title="TrialBalance" 
	  WindowState="Maximized"
	  Width="1000"
	  Height="700"
	  Icon="{StaticResource Image_ApplicationIcon}"
	  Background="{StaticResource Brush_DefaultWindowBackground}"
	  x:Name="_this">

Только взгляните на все церемонии! x:Class! Пространства имён XML! Почему бы не объявить всё это в одном месте, почему бы стандартные пространства имён не включать неявно?

К счастью, сейчас 2013-й год, и WPF был проделан огромный путь. Вот так код будет выглядеть сегодня:
Даёшь прогресс!
Total votes 76: ↑63 and ↓13 +50
Comments 226

The Old Reader перестает быть публичным

Reading time 1 min
Views 29K
IT-companies
The Old Reader, замыкающий топ-5 лучших замен Google Reader по версии replacereader.com, в последнее время преследовала полоса неудач: то там что-то поломается, то тут, недавно и вовсе последовательно полетело несколько SSD-дисков и расхлебывать это пришлось несколько дней. Надо помнить, что создатели The Old Reader всегда позиционировали свое детище, как некоммерческий проект «для себя и друзей» и лишь новость о скором закрытии RSS-читалки от Google принесла сервису некоторую популярность.
Читать дальше →
Total votes 34: ↑31 and ↓3 +28
Comments 81

Используете ли вы оператор нестрогого сравнения ("==") в PHP?

Reading time 2 min
Views 36K
PHP *
Из-за того, что в PHP при сравнении строк оператор "==" пытается сначала преобразовать их в числа [1][2] (даже, если оба операнда — строки), результат порой может оказаться неожиданным:
<?php
var_dump('123' == '       123'); // true
var_dump('1e3' == '1000'); // true
var_dump('+74951112233' == '74951112233'); // true
var_dump('00000020' == '0000000000000000020'); // true
var_dump('0X1D' == '29E0'); // true
var_dump('0xafebac' == '11529132'); // true
var_dump('0xafebac' == '0XAFEBAC'); // true
var_dump('0xeb' == '+235e-0'); // true
var_dump('0.235' == '+.235'); // true
var_dump('0.2e-10' == '2.0E-11'); // true
var_dump('61529519452809720693702583126814' == '61529519452809720000000000000000'); // true в php < 5.4.4

Читать дальше →
Total votes 92: ↑53 and ↓39 +14
Comments 175

Свежие впечатления о BlackBerry 10 NDK

Reading time 8 min
Views 10K
C++ *Qt *
Translation
image

Последние две недели я снова копался в BlackBerry 10 NDK, так как один из моих клиентов попросил помочь ему. Я предложил адаптировать свой курс «введение в Qt» под платформу BlackBerry, а также порекомендовал следовать советам из моей серии учебных роликов про BB10 и Cascades, опубликованных в начале этого года на YouTube. Теперь мне хочется поделиться с вами моими свежими впечатлениями о BlackBerry 10 NDK. Кстати, я уже писал о моих первых экспериментах с BB10 NDK этой весной.

Внимание. Это вольный перевод заметки Йэнса Веллера. Перевод сделан для составления общей картины о текущем состоянии мира [BB10 + Qt]. Приятного чтения.
Читать дальше →
Total votes 25: ↑25 and ↓0 +25
Comments 1

WannaCry vs. Adylkuzz: кто кого опередил?

Reading time 2 min
Views 21K
Antivirus protection *Network technologies *Data recovery *Backup *Data storage *


Все уже в курсе про многоликий вирус-вымогатель WannaCry, известный также как WanaCryptor, WanaCrypt0r, WCrypt, WCRY или WNCRY. Вирус этот наделал много шума, да. Несмотря на отсутствие дешифраторов, находятся предприимчивые граждане, которые оказывают услуги по расшифровке WNCRY-файлов. Но пост не об этом.

Неожиданное заявление сделали на днях исследователи из Proofpoint. Оказывается вирус WannaCry хоть и стал известным, но всё же не был первым, кто активно эксплуатировал уязвимости в Windows, используя EternalBlue и DoublePulsar.
Серьёзно?
Total votes 33: ↑31 and ↓2 +29
Comments 39

Как я blakecoin майнер делал

Reading time 11 min
Views 27K
High performance *Cryptography *C *FPGA *


Не знаю кому как, а меня прошедший 2017 год шокировал стремительным взлетом биткоина. Сейчас, конечно, ажиотаж уже ушел, а в 17-м году про криптовалюты говорили и писали все кому не лень.

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



Я тоже стал изучать, что же такое эти самые биткоины. Когда-то я даже начал свое собственное иследование алгоритма SHA256 и написал статью здесь на хабре "Можно ли вычислять биткоины быстрее, проще или легче?". Мои исследования алгоритмов хеширования до сих пор продолжаются и еще и близко не завершены… Может быть когда нибудь напишу про это отдельную статью. А сейчас пока вот это…
Читать дальше →
Total votes 30: ↑25 and ↓5 +20
Comments 36

Применение X-Macro в модерновом C++ коде

Reading time 5 min
Views 7.3K
C++ *Development for Windows *
Sandbox
Современные тренды разработки на C++ предполагают максимально возможный отказ от макросов в коде. Но иногда без макросов, причем в особо уродливом их проявлении, не обойтись, так как без них еще хуже. Об этом и рассказ.

Как известно, первым этапом компиляции C и C++ является препроцессор, который заменяет макросы и директивы препроцессора простым текстом.

Это позволяет делать нам странные вещи, например, такие:

// xmacro.h
"look, I'm a string!"

// xmacro.cpp
std::string str = 
#include "xmacro.h"
;
Читать дальше →
Total votes 30: ↑25 and ↓5 +20
Comments 15