Search
Write a publication
Pull to refresh
khim @khimread⁠-⁠only

User

Send message

Проблемы с кодировкой при посылке @mail в PHP

Reading time1 min
Views1.2K
Недавно столкнулся с проблемой, при отправке сообщений gMail (да и другие тоже), не могли верно отобразить моё письмо, написанное кирилицей.
Полазил в интернете, там этот вопрос уже поднимался, и предлагалось решение. Переработав его под себя, решил выставить и здесь тоже. Думаю, что некоторым из вас оно тоже может пригодиться:

//Функция trim уберет пробелы в начале и в конце
$title = htmlspecialchars(trim($_POST['title']));
$mess = htmlspecialchars(trim($_POST['mess'));

//Конвертирование
$title= '=?koi8-r?B?'.base64_encode(convert_cyr_string $title, «w»,«k»)).'?=';
$to = 'some_main@gmail.com';
$head = «Content-Type: text/plain;\r\n»;
$head .= «X-Mailer: PHP/».phpversion()."\r\n";
$head .= «Reply-To: admin@gmail.com\r\n»;
$head .= «To: $name <$to>\r\n»;
$head .= «From: admin@gmail.com\r\n»;
$head .= «Subject: $title\n»;

//Отправка
mail($to, $title, $mess, $header);

ЗЫ. Надеюсь, пригодится!

Красивые названия цветов или Королевский синий

Reading time1 min
Views29K
Все началось с того, что клиент, как бы между делом, написал: "Смените цвет иконки на Королевский синий." (на английском — Royal Blue) Сказать честно, для меня такая постановка задачи показалась необычной. Вот есть темно-синий, светло-синий и просто синий, но никакого королевского я не знаю. Пришлось искать.

Оказалось, что уже многие века существует целый список названий цветов и оттенков. Причем, некоторые названия весьма забавные:



Почему бы не использовать активнее эти названия в профессиональном лексиконе дизайнера? Не бездушные цифро-буквы вроде #C41E3A или R:196 G:30 B: 58, а красивые слова — цвет «Кардинал». Тогда речь дизайнера будет звучать как стихи. Например: "Я считаю, что сочетание текста цвета Светлая Вишня и фона цвета Шартрез делают композицию очень необычной. Если добавить нефритовых пятен в качестве акцентов, то вообще будет опупенно."

Кнопка End взламывает experts-exchange.com

Reading time1 min
Views995
Часто, когда ищу в Интернете ответы на свои вопросы, я попадаю на сайт http://experts-exchange.com

И часто нахожу там ответы с пометкой "Accepted Solution" на вопросы, ответы на которые трудно найти в других местах.

Но проблема в том, что ответы там доступны только для Premium Service Members only. Т.е там нужно оплатить аккаунт. А стоит он там от $12.95 за месяц до $189.95 за 2 года.

Но как-то я задумался, как же они попадают в выдачу поисковиков? Значит, их вопросы и ответы открыты для поисковиков? А как?
Читать дальше →

Скрытые возможности Google Reader’а

Reading time1 min
Views1.4K
Оказывается, Google Reader тайком записывает нашу активность. Через интерфейс вы ничего не найдете, однако есть несколько команд, чтобы посмотреть на историю некоторых своих действий:
  1. Все посты, которые вы отправили по почте — www.google.com/reader/view/user/-/state/com.google/tracking-emailed
  2. Все посты, отмеченные, как непрочитанные (галочка «Отметить, как прочитанные» внизу поста) — www.google.com/reader/view/user/-/state/com.google/tracking-kept-unread
  3. Все посты из предыдущего пункта, но которые вы еще не прочитали — www.google.com/reader/view/user/-/state/com.google/kept-unread
  4. Посты, у которых вы нажали заголовок, чтобы посмотреть пост в самом блоге — www.google.com/reader/view/user/-/state/com.google/tracking-item-link-used
  5. Посты, в которых вы нажимали ссылки — www.google.com/reader/view/user/-/state/com.google/tracking-body-link-used
  6. Прочитанные посты, расположенные в порядке того, как прочитывались — www.google.com/reader/view/user/-/state/com.google/read
  7. Фиды, на которые вы подписаны по рекомендации Гугла (раздел «Рекомендации») — www.google.com/reader/view/user/-/state/com.google/recommendations-subscribed
  8. Рекомендованные Гуглом фиды от которых вы отказались («Нет, спасибо» в разделе «Рекомендации») — www.google.com/reader/view/user/-/state/com.google/recommendations-dismissed

Подсмотрено в блоге «Google Operating System»

Firefox. Как запретить отключать элементы новых окон, открываемых через Java-script.

Reading time1 min
Views852
В новых или всплывающих окнах, открываемых через Java-script, часто бывают отключены некоторые элементы интерфейса (адресная строка, панель закладок, панель инструментов, полосы прокрутки, строка состояния, кнопка закрытия окна и другие). Запретить отключение функций и скрытие элементов можно при помощи тонкой настройки Firefox через about:config. Набираем в поле «Фильтр» dom.disable_window_open_feature.* и видим ряд параметров, отвечающих за запрет отключения элементов. Чтобы запретить отключать определенный элемент в новом окне, нужно значение параметра для этого элемента сделать «true».
Например, «dom.disable_window_open_feature.toolbar=true» запретит скрывать панель инструментов в новом или всплывающем окне.

Использована информация mozillazine.org.

Firefox и HTTP HEAD метод

Reading time1 min
Views540
Когда-то давно, у меня в огнелисе был какой-то плугин, который позволял делать запросы HEAD.
Выглядело это так: зажимаем shift, наводим курсор на ссылку и перед глазами появляется небольшое окошко с ключевой информацией. Чаще всего я это использовал для опеределения размера файла (ну не всегда пишут размер).

Попытался сейчас найти что-то похожее, но не нашел ничего… Странно.

Оптимизируем Vista

Reading time6 min
Views12K

Предисловие

Сколько сотен раз слышал, как Windows Vista ругают за ее медлительность, «глючность», несовместимость, неудобство и прочее. Признаться честно, я и сам до недавнего времени был, мягко говоря, не в восторге от Vista, пытался ее использовать но потом от нее отказался.



Но два месяца назад по работе пришлось вплотную столкнуться с Vista, и я заинтересовался » а как можно заставить ее работать хорошо? И вот, по прошествии двух месяцев, хочу поделится с вами своим опытом и надеюсь получить и от вас полезные советы. Если вы

Уверен, многие из вас уже столкнулись или еще столкнутся с необходимостью использовать Vista, поэтому данная статья будет интересна и тем, кто эту ОС не используют. Кстати, далее будет совет, как использовать Windows Vista легально в течении 120 дней!

Надеюсь, вы оцените мою статью — я потратил на ее написание почти половину своего выходного :) Понятно, что для кого-то ниже написанное покажется «детским лепетом», кто-то всё это уже знает, но почему-то не делает. А кто-то почерпнет полезную для себя информацию.

Сразу отмечу, что не хочу никого убедить использовать Vista или вызвать холивар — если кому-то данная тема не интересна, просто пройдите мимо, пожалуйста. Спасибо.

UPD спустя час: удивительно, как любят ставить минусы топикам про Vista, где ее не «опускают»! А то что это полезная многим статья про все более широко распространяющуюся ОС — видно некоторым начхать :(
UPD спустя четыре часа: спасибо за позитивную оценку статьи, жду большего количество полезных дополнений к ней :)
UPD спустя почти неделю :) ускоряем копирование в Висте! Наконец-то однокилобайтный ярлык не удаляется по 30 секунд :) Пуск->Панель управления (не классическая)->Программы->Включение или отключение компонентов Windows. Снимаем галку «Удаленное разностное сжатие». Ура.

Думаю над продолжением статьи, уже есть наработки :)
Читать дальше →

Числа в строчном написании.

Reading time1 min
Views648
   Навеяно хаброй и постом про Множественные числа.
   Была у меня как-то задача на PHP, в которой требовалось локализированно выводить разные огромные числа в строчном написании, при чём с десятыми и тысячными долями. Написал классик для этого, малость корявый по коду, но работает стабильно и понимает числа типа "100300,3940023" выводились как "сто тысяч триста и три миллиона девятсот сорок тысяч двадцать три десятимиллионных".

Использовать классик просто:
$out_string = NUM2STR::translate($string_number," и ",true);

Класс можно сказать с моего ресурса: download (1,52 Кб)
Апдейт: rub. download (1,53 Кб) приспособлено для денег + исправление, чтобы 0 заменялся на «ноль».

Ubuntu и повреждение винчестера

Reading time2 min
Views4.7K


Сегодня я узнал пренеприятнейшее известие — Ubuntu Linux вследствие некорректной работы скрипта демона питания может повреждать ноутбучный винчестер путем его постоянных остановок и запусков (пытаясь сэкономить (ха!) электроэнергию).

Этот ресурс для винчестеров является довольно важным, и для современных моделей составляет около 600 000 раз. Load Cycles увеличивается на единицу при каждой остановке-разгоне шпинделя винчестера или при парковке/депарковке его головки.

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

Если кому нужно поднять карму, уже можно не писать в комментариях

Reading time1 min
Views759
Пока будут пульки — буду плюсомётить :-)
Всё равно это глупость несусветная…

Upd:
Всё, заминусовали и отняли плюсомёт :-D
Единственное только, не покидает головы мысль, что я случайно подставил тех, кого хотел проплюсовать. Знал бы — предложил бы стучаться в ICQ :-)

Основы Linq. Linq и n-уровневая архитектура

Reading time3 min
Views3.6K
Майкрософот предоставило новое легкое в освоении и очень мощное и гибко расширение языков .NET для обработки данных под названием Linq.

Как в многоуровневых приложениях спроектировать провайдер данных так, что бы получить набор объектов?

К примеру , есть таблица tbCustomers ((Int64)CustID, (String)Name, (int32)Age) и есть класс Customers:

publicclass Customers
{
    private Int64 _CustID;
    public Int64 CustID
    {
        get { return _CustID; }
        set { _CustID = value; }
    }

    private string _Name;
    public string Name
    {
        get { return _Name; }
        set { _Name = value; }
    }

    //Тип Int32 допускающее значение null
    private Int32? _Age;
    public Int32?Age
    {
        get { return _Age; }
        set { _Age = value; }
    }

    //Инициализаторы
    public Customers()
    {
    }
   
    public Customers(Int64 CustID, string Name, Int32? Age)
    {
        _CustID = CustID;
        _Name = Name;
        _Age = Age;
    }

    //Получение набора объектов из поставщика данных
    publicstatic List<Customers> GetCustomers()
    {
        return CustomersData.GetAllCustomers();
    }
}

и необходимо получить из поставщика набор объектов Customers.

Стандартное решение этого вопроса в .NET2.0 является использование пространства имен System.Data.SqlClient:

publicstatic class CustomersData
{
    //ИспользованиеSqlClient
    public static List<Customers> GetAllCustomers()
    {
        List<Customers> lst = new List<Customers>();
        using (SqlConnection conn = new SqlConnection(«Data Source=…»))
        {
            conn.Open();
            SqlCommand cmd = new SqlCommand(«SELECT CustID, Name, Age FROM tbCustomers», conn);
            SqlDataReader reader = cmd.ExecuteReader();
            while (reader.Read())
            {
                lst.Add(new Customers((Int64)reader[«CustID»], (String)reader[«Name»], (Int32)?reader[«Age»]));
            }
        }
        return lst;
    }
}

При использовании Linqмы можем получить набор данных из анонимных типов используя инициализатор объекта, т.е.

publicstatic class CustomersData
{
    //ИспользованиеLinq
    public static List<Customers> GetAllCustomers()
    {
        LinqDcDataContext db=new LinqDcDataContext();
        IEnumerable<Customers> result = db.tbCustomers.Select(c => new Customers(c.CustID, c.Name, c.Age));
        //ПриводимнаборIEnumerable<Customers> кList<Customers>
        return new List<Customers>(result);
    }
}




Оригинал статьи Linq в n-уровневой архитектуре

Узнаем параметр Generic-класса в Java

Reading time9 min
Views114K
Если вы не очень часто программируете на Java, то этот топик скорее всего будет для вас бесполезен. Не читайте его :)

Недавно понадобилось решить следующую задачу: определить класс, которым параметризован generic-класс.

Если кто-то сталкивался с подобной задачей, то наверное также сразу попробовал написать что-то вроде этого:
public class AbstractEntityFactory<E extends Entity> {
  public Class getEntityClass() {
    return E.class;
  }
}

Увы, IDE либо компилятор сразу укажут вам на ошибку («cannot select from a type variable» в стандартном компиляторе): " E.class" — не является допустимой конструкцией. Дело в том, что в общем случае во время исполнения программы информации о реальных параметрах нашего generic-класса может уже и не быть. Поэтому такая конструкция в Java не может работать.
Читать дальше →

Как можно снизить потребление оперативной памяти на VPS в 2 раза, ничего не меняя в настройках программ

Reading time3 min
Views33K
Взял VPS, построенный на OpenVZ. Поставил туда Debian Lenny и всякие программы (обычный LAMP, по сути). С точки зрения потребления ресурсов ничего почти не настраивал, вышло где-то 200М занятой оперативной памяти (сразу после старта).
Написал ulimit -s 1024 в /etc/init.d/rc ближе к верху. Перезагрузился. Потребление памяти на VPS упало более чем вдвое, стало около 100М.

Если у Вас VPS на Xen или аналогичных, то у Вас нет граблей, с которыми я тут боролся. Если на OpenVZ (Virtuozzo) со товарищи — у Вас, скорее всего, на VPS эти же грабли.

В статье — почему и как это работает.

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

Наконец о dvi можно забыть, или обратный поиск в pdf под Windows.

Reading time1 min
Views2K
Здесь рассказано, как настроить синхронизацию SyncTeX и SumatraPDF для работы прямого и обратного поиска в pdf под Windows. SyncTeX включен в дистрибутивы TeXLive 2008 и MikTex 2.7.

P.S. Если что-то не работает, проверьте пути к программам у вас и в инструкциях.
P.P.S. При использовании /include{} или /input{} указывайте расширение файла, иначе поиск не будет работать.

Удобный доступ к файлам на удаленных хостах

Reading time3 min
Views58K
На Хабре достаточно много разработчиков работают с файлами на удаленных хостах. На локальной машине запускается IDE, отладчик, все необходимое, а сами файлы находятся на сервере, где они регулярно бакапятся, автобилдятся, тестируются и так далее. Очень удобный рабочий вариант. Да я сам его использую.
Единственная проблема, доставляющая неудобство — файлы все же находятся на другом компе, и доступ к ним не такой простой и прозрачный как к «своим».
Под катом — как сделать такой доступ максимально удобным. Чтобы он запускался автоматом когда надо, а самое главное — чтобы не запускался, когда не надо!
Читать дальше →

Три редкоиспользуемые оси в XPath

Reading time2 min
Views82K
Основная мощь языка XPath заключается в осях, позволяющих добраться до любого элемента в исходном документе. Рассмотрим применение таких редкоиспользуемых осей, как ancestor, descendant и self.

ancestor


Задача: получить атрибут id элемента-«прадеда» foo.

Обычно в таких случаях начинают рисовать лестницы:

../../../@id

Такая запись плоха тем, что малопонятна без знания исходного xml. Автор рекомендует в подобных случаях использовать более информативное выражение:

ancestor::foo[1]/@id

Эта запись не только даёт представление об искомом элементе, но и продолжает работать даже в том случае, когда текущий элемент изменил своё положение в дереве.
Читать дальше →

Xen. Fedora 10 в качестве Dom0

Reading time2 min
Views1.7K
Последняя версия из племени Fedora, штатно поддерживающая работу
в режиме Dom0, была за номером 8. Xen там был версии 3.1.2, а ядро для Dom0 — 2.6.21.
Хочется более новых версий всего софта, т.к. все уже довольно сильно устарело.
Главное устарел сам XEN — текущая stable версия за номером 3.3.1 датируется 05.01.2009, и там довольно много вкусностей.

Fedora 9/10 не поддерживают работу в режиме Dom0, то есть в них нет соответствующего ядра. Что делать? Я нашел довольно простой способ, который полноcтью покрыл мои потребности.
Читать дальше →

Используем память разумно, или mod_wsgi на 256 мегабайтах

Reading time2 min
Views3.2K
Какое-то время назад потребовалось перенести проекты с выделенного сервера на VPS. Для этих целей был выбран slicehost. В общем и целом контора нравится и готов её рекомендовать всем.

Случилась лишь одна проблема: начали приходить уведомления о слишком сильном использовании диска (чтение/запись). Долгое время проблема не находила решения из-за отсутствия времени, но это вылилось в непонятные отказы, сопровождавшиеся статистикой в >200% CPU usage. После долгих извращений, была найдена проблема, а затем и её решение.
Читать дальше →

Information

Rating
Does not participate
Registered
Activity