Как-то я совсем упустил этот проект, между тем, если верить сообщению на сайте, ему идёт уже третий год. Итак:
Open Server — это портативная программная платформа, созданная специально для веб-разработчиков с учётом их рекомендаций и пожеланий.
По сути — аналог небезызвестного Денвера, локальный сервер для веб-разработки под Windows, который можно ещё и носить с компьютера на компьютер. Но есть и отличия:
Во-первых, интерфейс. Здесь у нас не три ярлыка, дёргающих скрипт на перле, а нормальное меню в трее, с кучей пунктов и диалогом настройки:
Присутствует несколько веб-серверов (Apache, Nginx, Apache+Nginx), несколько версий PHP, а также различные СУБД.
Регулярно обновляется! Да, это камень в сторону Денвера.
Есть и минус — только PHP, никакого Python или Perl.
Скачать можно с официальной страницы. Есть две версии — Mini и Full. Полная версия весит в четыре раза больше и включает в себя документацию с набором бесплатных программ. Для меня не очень ясно, зачем нужно последнее, неужели у кого-то нет любимых программ для разработки?
В целом, впечатление хорошее, если вы работаете на Windows и программируете на PHP, скорее меняйте свои привычки! попробуйте Open Server. Правда, непонятно, причём тут Open, исходники закрыты, но оставим это на совести разработчика :-)
В Windows 7 есть встроенная программа для создания заметок на рабочем столе. Что меня всегда в ней раздражало, это иконка на панели задач, вот такая:
Если поискать «sticky notes taskbar hide» в гугле, то можно найти утилиту Sticky Notes Taskbar Hider. Она работает в фоновом режиме и прячет ненавистную кнопку:
Это невероятно кривое решение! Особенно если учесть, что программа тяжелее самих «Записок». Так что давайте поступим по-хакерски и поправим саму StickyNot.exe :-)
Если хотите готовое решение, то, скачайте готовый патч. Скопируйте к нему StickyNot.exe и запустите. Желательно затем переместить программу обратно в %windir%\System32 (для это понадобится изменить разрешения файла так, что он даст себя удалить), иначе не будет работать контекстное меню. Не забудьте сохранить копию оригинала.
Если же интересно, как эти патчи получились, добро пожаловать в продолжение поста =)
Наткнулся на скриншот с красивой информацией о системе в консоли. Как, выяснилось, отвечает за это утилита «archey», но в последних её версиях пропала поддержка всех дистрибутивов кроме Arch Linux. Сделал форк старой версии и заодно поправил баг с разделителем-запятой в русской локализации — программа ожидала точку и падала.
Поддерживаются Arch, Ubuntu, Debian, Fedora, CrunchBang и Linux Mint. Для Debian Wheezy установка выглядит вот так:
Удивительно, но немногие знают, что стандартные переменные среды в «винде» можно переопределить для отдельной программы. Сделать это можно, например, вот таким файлом:
@echo off && %~d0 && cd %~dp0
rem Имя *.exe файла программы
set app=chrome.exe
rem Папка с профилем
set folder=profile
md "%folder%\AppData\Local\Temp"
md "%folder%\AppData\Roaming"
set ALLUSERSPROFILE=%~dp0%folder%
set APPDATA=%~dp0%folder%\AppData\Roaming
set HOMEDRIVE=%~d0
set HOMEPATH=%~p0%folder%
set LOCALAPPDATA=%~dp0%folder%\AppData\Local
set TEMP=%~dp0%folder%\AppData\Local\Temp
set TMP=%~dp0%folder%\AppData\Local\Temp
set USERNAME=%folder%
set USERPROFILE=%~dp0%folder%
start %app%
Здесь у нас переопределяются пути пользователя. Вместо chrome.exe подставляем название своей программы, вместо profile пишем название папки, в которую будут сохранятся данные пользователя, сохраняем с расширением cmd или bat, кладём к программе и запускаем.
Зачем это можно использовать:
Сделать из любого софта portable-версию — все настройки будут сохранятся в папке рядом с исполняемым файлом.
Помочь программам, которые не могут ничего сохранить из-за русского имени папки пользователя — поменять путь так, что в нём будут только английский алфавит.
В десятой версии Internet Explorer появилась серая подсветка ссылок при клике:
Мне не нравится, да и подходит она не везде — на картинке сверху видно, что подсвеченные строки накладываются друг на друга. Для отключения через код страницы есть тег msapplication-tap-highlight, но работает он только на Windows Phone, так что придётся использовать более кривой метод:
a:active {
background-color: inherit;
}
В самом браузере возможности отключить подсветку я не нашел, похоже что единственный способ — сохранить css выше в файл и задать через Настройки → Оформление → Пользовательский стиль. Но опять же, способ корявый, если на сайте заданы свои стили для активной ссылки, их видно не будет.
Читал на «хабре» про алгоритм sleepsort и благополучно забыл про него. Сегодня решил посмотреть, как его можно реализовать на C#.
Первой идеей было использовать Parallel.ForEach, но, как выяснилось, количество активных потоков в нём регулируется количеством ядер процессора и фазой Луны — стартуют они не одновременно, а ждут завершения предыдущих. Поэтому сделал через Thread:
using System;
using System.Threading;
class SleepSort
{
static void ThreadWorker(object number)
{
Thread.Sleep(100 * (int)number);
Console.WriteLine(number);
}
static public void Sort(int[] numbers)
{
foreach (int number in numbers)
{
new Thread(ThreadWorker).Start(number);
}
}
}
class Program
{
static void Main()
{
SleepSort.Sort(new int[] { 7, 9, 8, 10, 6, 5, 1, 3, 2, 4 });
Console.ReadKey(true);
}
}
Умножение на 100 при задержке сделано неспроста — точности при отдельных миллисекундах не получается и потоки начинают завершаться в абы каком порядке. Конечно, практического применения у алгоритма нет, но выгядит весело =)
В Windows XP функция Beep пищала системным динамиком, но в «Семёрке» её поведение изменили, теперь звук перенаправляется на звуковую карту, что совсем не так весело.
Как выяснилось, пищать спикером всё ещё можно, но делать это придется напрямую (по ссылке пример на C#). Вот, если кому надо, то же самое, но на Delphi:
function Inp32(PortAdr: word): byte; stdcall; external 'inpout32.dll';
function Out32(PortAdr: word; Data: byte): byte; stdcall; external 'inpout32.dll';
procedure MyBeep(tone, duration: integer);
var
n,m: integer;
begin
if tone <> 0 then
begin
n := 1193180 div tone;
Out32($43,182);
Out32($42,n and $FF);
Out32($42,(n shr 8) and $FF);
m := Inp32($61);
Out32($61,m or $03);
end;
Sleep(duration);
m := Inp32($61);
Out32($61,m and $FC);
end;
Теперь пара слов об inpout32.dll. Скачать её можно отсюда, это модифицированная версия, которая, несмотря на название, работает и в x32 и в x64 редакциях Windows. Для прямого доступа к портам устанавливается драйвер, что накладывает ограничения:
Программу в первый раз нужно запускать с правами администратора. Если планируется наличие установщика, то в конце установки можно запустить InstallDriver.exe.
Пользователя нужно предупредить, так как многие антивирусы следят за установкой драйверов.
64-битная версия драйвера подписана, так что проблем с разрешением на установку не будет.
По интернету уже довольно давно ходит картинка, показывающая как разные браузеры обрабатывают толстые границы с точками. С тех пор ничего не изменилось. Но, как выяснилось, чтобы поймать баги, достаточно границы в один пиксель! Во время создания сайта у меня был код, похожий на этот:
В редакторе Word нет встроенной возможности удалить ссылки из документа. Вернее, она есть — нажимаем Ctrl + A, а затем Ctrl + Shift + F9. Но синий цвет по-прежнему остаётся. Еще одна проблема — печать страниц из Википедии, сноски, которыми утыканы все статьи, в печатном виде часто бесполезны. Беглым поиском решения не нашел, поэтому написал два простеньких макроса:
Sub Удалить_ссылки()
On Error Resume Next
'Определим выделен ли текст, если да, возьмем выделение, нет - весь документ
If Len(Selection.Range.Text) > 0 Then
Set MyObject = Selection
Else
Set MyObject = ActiveDocument
End If
'Изменим стиль текста ссылок, потом удалим ссылки
While MyObject.Hyperlinks.Count > 0
MyObject.Hyperlinks(1).Range.Font.Underline = wdUnderlineNone
MyObject.Hyperlinks(1).Range.Font.ColorIndex = wdAuto
MyObject.Hyperlinks(1).Delete
Wend
End Sub
Sub Удалить_сноски_wiki()
With Selection.Range.Find
.Text = "\[*\]"
.Replacement.Text = ""
.MatchWildcards = True
.Forward = True
If Len(Selection.Range.Text) = 0 Then
.Wrap = wdFindContinue
End If
.Execute Replace:=wdReplaceAll
End With
End Sub
Если текст выделен, то будет обработана выделенная часть, если не выделен — весь документ. У первого макроса есть небольшая проблема: удаление и перекрашивание каждой ссылки пишется в историю изменений, поэтому при отмене каждая ссылка будет отменяться по отдельности. Как исправить не знаю, с вордовским диалектом бейсика знаком очень слабо.
Windows XP при отключенной опции «Не кэшировать эскизы» (а по умолчанию она отключена) создавала в папках с изображениями файлы «Thumbs.db». Не знаю почему, но это меня всегда жутко раздражало — как хорошо, что начиная с «висты» эскизы кэшируются в отдельных файлах в профиле пользователя. Но что делать с папками, в которых Thumbs.db остался?
Чтобы избавиться от них, написал простой скрипт:
@echo off
set /p drive=Input drive letter:
echo Please wait...
del %drive%:\Thumbs.db /F /S /Q /A
pause