Blog

  • компьютер

    Вчера наконец собрал компьютер из купленных комплектующих

    Все летает. Даже Windows XP не пришлось переустанавливать заново. Просто вставил Setup CD и сделал Restore
    Все заработало за исключением AVG Free (antivirus). Причем скачанный дистрибутив с сайта не захотел инсталлится. У меня уже такое когда-то было на ноутбуке. Похоже у них беда с uninstall (какие-то данные не удаляются корректно и мешают инсталляции новой версии). Просто поставил Avast – мне без разницы и на ноутбуке стоит он же.

    Единственное еще не поставил драйвера  для звука.

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

  • Benjamin Button

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

    Цитата оттуда:
    “Нам суждено терять близких людей. Как иначе понять, что они дороги нам.”
    В точку:-(

    Еще одна:
    “Наши жизни состоят из возможностей. Даже если они упущены”

  • SIP для дома

    Месяц назад настроил дома SIP телефонию. В Соколе купил адаптер (D-Link DVG-7111S):

    D-Link DVG-7111S

    Он подключается к роутеру (в моем случае к D-Link DSL-2640) и телефонной линии, а от него уже идет подключение обычного стационарного телефона в квартире.

    Через web-интерфейс я настроил его работу так:
    – если набирается телефонный номер в Израиле (00972….), то звонок идет через IP-телефонию (lowratevoip)
    – иначе идет обычный звонок через Укртелеком

    При этом этот же телефон принимает обычные звонки на наш городской номер и если кто-то звонит на мой account в lowratevoip.com, то можно ответить тоже с телефона

    Можно настроить кучу всего разного, но мне именно это нужно было и я это настроил

    Пока из недостатков могу отметить только такое:
    – нельзя прописать несколько SIP-account. Можно было бы в зависимости от направления отправлять звонок то через lowratevoip.com, то через другого оператора. В этом шлюзе можно задать только одного оператора
    – когда звонишь через SIP-оператора, то собеседнику чуть хуже слышно нас. По идее наверное можно как-то поднять уровень громкости, но пока особо не возился
    – документация по настройке очень скудна. И это еще мягко сказано. Я полдня провозился только из-за того, что не знал, что номер, на который роутится набор по маске, тоже проверяется по маскам (и следовательно может роутится)
    – нужно привыкнуть к тому, что длинный номер телефона нужно набирать без всяких пауз и не ждать гудков (как обычно было раньше после набора 8 или 8-10). После набора каждого номера проходит пару секунд до начала реального звонка
    – нет тумблера для выключения питания. Мне включенный шлюз нужен только временно, а не на постоянной основе и приходится выключать из сети

    Но в принципе я очень доволен. Свою задачу я решил и по деньгам это вышло очень дешево

  • новый компьютер

    В понедельник заказал в Розетке комплектующие для нового компа домой:

    • Intel Core i3-550 3.2GHz/4MB/DMI (BX80616I3550) s1156 BOX  1218 грн. $ 152Intel Core i3-550
    • GIGABYTE GA-H55M-UD2H (s1156, H55 Express, PCI-Ex16)  860 грн. $ 107GA-H55M-UD2H
    • Kingston DDR3-1333 2048MB PC3-10600 (KVR1333D3N9/2G) 2шт 788 грн. $ 98Kingstone KVR1333D3N9

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

    Все остальное (винчестеры, DVD etc) пойдет из старого. Вернее они и так новые и покупались недавно для последующего upgrade

  • Parser for ePub files (e-book)

    Today I finished the component to parse the e-books in .epub format:

    http://en.wikipedia.org/wiki/Epub

    I added this parser in SMWord suite  Also I added this file format to Fast Document Viewer and ABA DocConvert

  • C#: generate image thumbnail

    //create the thumbnail 
    int image_width = 96; 
    int image_height = 96; 
    Image imgThumbnail = imgOriginal.GetThumbnailImage(image_width, image_height, null, IntPtr.Zero); 
    
    //save to file 
    imgThumbnail.Save(Path.GetDirectoryName(AFileName) + @"\a2.bmp", ImageFormat.Bmp);

    or

            private bool ThumbnailCallback()
            {
                return false;
            }
    
            private void ProcessImage(Image imgOriginal)
            {
                //create the thumbnail
                int image_width = 96;
                int image_height = 96;
                Image.GetThumbnailImageAbort myCallback = new Image.GetThumbnailImageAbort(ThumbnailCallback);
                Image imgThumbnail = imgOriginal.GetThumbnailImage(image_width, image_height, myCallback, IntPtr.Zero);
    
                //save to files
                imgThumbnail.Save(Path.GetDirectoryName(AFileName) + @"\a2.png");
            }
    
  • C#: random file name

    string path = Path.GetRandomFileName();
    
  • C# and MS SQL Server: add System.Drawing assembly

    Working with images in SQL Server 2005 is not easy because the System.Drawing.dll is not included in the assemblies with SQL Server.

    This library was not added because it does not pass the CLR Verifier, and it has not been fully tested in SQL Server hosted environment (i.e. it could damage the stability and security of SQL Server). Careful consideration should be taken when attempting to manipulate images (or even load images from a file system or webservice).

    To add the System.Drawing.dll assembly to SQL Server use the new create assembly statement. The database you are adding this assembly to must have its TrustWorthy property turned on. The following code demonstrates how to add System.Drawing.dll to the ImageGen database.

    ALTER DATABASE yourDatabase
    SET TRUSTWORTHY ON
    GO
    CREATE ASSEMBLY [System.Drawing]
    FROM 'C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Drawing.dll'
    WITH PERMISSION_SET = UNSAFE
    GO
    

    Now a managed stored procedure can be created that uses the System.Drawing.dll assembly as shown below (although do not forget to add the assembly reference in the VS project).

    using System;
    using System.Data;
    using System.Data.SqlClient;
    using System.Data.SqlTypes;
    using Microsoft.SqlServer.Server;
    using System.Drawing;
    using System.Drawing.Imaging;
    
  • C#: password characters for property in Property Grid

    To not show your passwords in plain text on a propertygrid, just use the PasswordPropertyText attribute:

    [DisplayName("Password"), Category("Authentication"), PasswordPropertyText(true)] 
    public string Password 
    { 
       … 
    }
    
  • C#: image to byte array

        private byte[] ImageToByteArray(Image img) 
        { 
            // stream to save the image to byte array 
            Stream ms = new MemoryStream(); 
            img.Save(ms, img.RawFormat); 
    
            // read to end 
            byte[] imgBytes = new byte[ms.Length-1]; 
            ms.Position = 0; 
            ms.Read(imgBytes, 0, imgBytes.Length); 
            ms.Close(); 
    
            return imgBytes; 
        }