Блог → Программирование

Open Server

Как-то я совсем упустил этот проект, между тем, если верить сообщению на сайте, ему идёт уже третий год. Итак:

Open Server — это портативная программная платформа, созданная специально для веб-разработчиков с учётом их рекомендаций и пожеланий.

По сути — аналог небезызвестного Денвера, локальный сервер для веб-разработки под Windows, который можно ещё и носить с компьютера на компьютер. Но есть и отличия:

Изображение (186KB)

Скачать можно с официальной страницы. Есть две версии — Mini и Full. Полная версия весит в четыре раза больше и включает в себя документацию с набором бесплатных программ. Для меня не очень ясно, зачем нужно последнее, неужели у кого-то нет любимых программ для разработки?

В целом, впечатление хорошее, если вы работаете на Windows и программируете на PHP, скорее меняйте свои привычки! попробуйте Open Server. Правда, непонятно, причём тут Open, исходники закрыты, но оставим это на совести разработчика :-)

Нет комментариев   11 мая 2013 22:49

Прячем «Записки» Windows 7 с панели задач

В Windows 7 есть встроенная программа для создания заметок на рабочем столе. Что меня всегда в ней раздражало, это иконка на панели задач, вот такая:

Изображение (63KB)

Если поискать «sticky notes taskbar hide» в гугле, то можно найти утилиту Sticky Notes Taskbar Hider. Она работает в фоновом режиме и прячет ненавистную кнопку:

Изображение (5KB)

Это невероятно кривое решение! Особенно если учесть, что программа тяжелее самих «Записок». Так что давайте поступим по-хакерски и поправим саму StickyNot.exe :-)

Если хотите готовое решение, то, скачайте готовый патч. Скопируйте к нему StickyNot.exe и запустите. Желательно затем переместить программу обратно в %windir%\System32 (для это понадобится изменить разрешения файла так, что он даст себя удалить), иначе не будет работать контекстное меню. Не забудьте сохранить копию оригинала.

Если же интересно, как эти патчи получились, добро пожаловать в продолжение поста =)

Читать далее
42 комментария   12 марта 2013 23:22

Пятиминутка линукса

Наткнулся на скриншот с красивой информацией о системе в консоли. Как, выяснилось, отвечает за это утилита «archey», но в последних её версиях пропала поддержка всех дистрибутивов кроме Arch Linux. Сделал форк старой версии и заодно поправил баг с разделителем-запятой в русской локализации — программа ожидала точку и падала.

Поддерживаются Arch, Ubuntu, Debian, Fedora, CrunchBang и Linux Mint. Для Debian Wheezy установка выглядит вот так:

wget https://raw.github.com/DuMOHsmol/archey/master/archey
chmod a+x archey
sudo mv archey /usr/bin/deby

Затем пишем в консоли deby и радуемся:

Изображение

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

Нет комментариев   24 февраля 2013 17:53

Подменяем папки пользователя в Windows

Удивительно, но немногие знают, что стандартные переменные среды в «винде» можно переопределить для отдельной программы. Сделать это можно, например, вот таким файлом:

@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, кладём к программе и запускаем.

Зачем это можно использовать:

2 комментария   12 февраля 2013 14:44

Подсветка активных ссылок в IE10

В десятой версии Internet Explorer появилась серая подсветка ссылок при клике:

Изображение

Мне не нравится, да и подходит она не везде — на картинке сверху видно, что подсвеченные строки накладываются друг на друга. Для отключения через код страницы есть тег msapplication-tap-highlight, но работает он только на Windows Phone, так что придётся использовать более кривой метод:

a:active {
  background-color: inherit;
}

В самом браузере возможности отключить подсветку я не нашел, похоже что единственный способ — сохранить css выше в файл и задать через Настройки → Оформление → Пользовательский стиль. Но опять же, способ корявый, если на сайте заданы свои стили для активной ссылки, их видно не будет.

2 комментария   23 января 2013 01:09

Sleepsort

Читал на «хабре» про алгоритм 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 при задержке сделано неспроста — точности при отдельных миллисекундах не получается и потоки начинают завершаться в абы каком порядке. Конечно, практического применения у алгоритма нет, но выгядит весело =)

Нет комментариев   16 января 2013 01:45

Beep в Windows 7

В 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. Для прямого доступа к портам устанавливается драйвер, что накладывает ограничения:

64-битная версия драйвера подписана, так что проблем с разрешением на установку не будет.

2 комментария   10 января 2013 21:06

Про border-style: dotted

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

<!DOCTYPE html>
<html><head><title>Test page</title>
<style>
hr {
  border: 0;
  width: 20px;
  height: 1px;
  border-bottom: 1px black dotted;
  display: inline-block;
}
div.test {
  width: 10px;
  height: 10px;
  border-left: 1px black dotted;
  border-bottom: 1px black dotted;
}
</style>
</head><body><hr><div class="test"></div></body></html>

Читать далее

Нет комментариев   6 января 2013 21:31

Удаляем ссылки и сноски в MS Word

В редакторе 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

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

Нет комментариев   30 декабря 2012 17:30

Чистим диск от Thumbs.db

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

После запуска указываем букву диска и жмем Enter.

Нет комментариев   28 декабря 2012 23:17