Безплатни (като безплатна бира) сайтове за stock изображения

Сайтове, които предлагат безплатни изображения (stock images) във висока резолюция и които могат да се изпозлват за всякакви (включително комерсиални) цели и са без attribution (няма изискване за обратен линк или друго):

  1. Pixabay https://pixabay.com
    Вероятно най-добрия сайт, на който съм попадал – над 570 000 изображения, добра търсачка и хубав интерфейс
  2. StockSnap – https://stocksnap.io
    Добра търсачка, добър (макар и не богат) избор от изображения
  3. Unsplash – https://unsplash.com
    Може да се използват за всякакви цели
  4. Pexels – https://pexels.com
    Според тях имат 5000 изображения и всеки месец добавят около 600
  5. Picjumbo – https://picjumbo.com
    Навигацията и търсенето не е много удобна
  6. FreeImages – http://www.freeimages.com/
    Много изображения, не съвсем удобно търсене
  7. Списък със сайтове – http://publicdomainarchive.com/free-stock-photos/
    Дълъг списък със сайтове за изображения

Извличане на сертификат и частен ключ от pfx

Вече съм писал относно инсталиране на сертификати тук и тук   но днес ми се наложи да извлека сертификата и частния ключ от pfx файл. Това се оказа също лесна задача:

За частния ключ:

За сертификата

Silverlight 5 full trust application in the browser

Silverlight има какво да предложи (все още), макар и все по-малко и все по-трудно. Едно от предимствата достъпни във версия 5, които може да се използва е връзка с хардуер/ COM/ native call в браузър. Отделен е въпроса “защо” и “кой” би искал да се направи по този начин. Във всеки случай, ако сте стигнали дотам има няколко gotchas, които е хубаво да се знаят.
За да имате достъп до файлова система, хардуер и т.н., applet-а е нужно да е с повишени права, което става от настройките на проекта : Require elevated trust when running in-browser. Всичко работи идеално, ако аплета се хоства в localhost или 127.0.0.1 – в момента, който се изпълнява в Internet/ Local Internet всичко изведнъж се скапва и се получава грешки от рода на

За да работи нормално и тук са необходими няколко стъпки:

  • аплетът трябва да е подписан (настройки на проекта – Signing)
  • горния сертификат трябва да присъства в Trusted Publishers на всички клиентски компютри (!!!)
  • ако е self-signed, то разбира се трябва да присъства и в Trusted Root authorities
  • в Registry на всяка клиентска машина е необходимо да се позволи изпълнението на аплети с повишени права в бразуър (ако се изпълнява out-of-browser това не е необходимо).

Необходимите ключове, които търпят промяна са

както е описано в MSDN.
Не измислих нищо по-добро от проверка дали аплета върви с повишени права с

и ако не – да прехвърля към страница с допълнителна информация как да се разреши проблема. А именно еднократно изпълнение на изпълним файл (по-добри идеи?), който променя настройките в Registry и инсталира нужните сертификати.

За инсталиране на сертификатите може да се използва например:

а за настройките в registry:

 

Как да обновим Desire HD (Android 2.3.5) до CM11 (Android 4.4.4)

HTC Desire HD е телефон от края на 2010 с 1 GHz процесор и 768 MB RAM. HTC отдавна спряха всякаква поддръжка и телефонът си остана с Gingerbread 2.3.5.

За радост телефонът се държи изненадващо добре с Android KitKat 4.4.4, който  е и оптимизиран за работа с устройства с по-малко RAM

За да се обнови софтуера до CM11 M8.1 unofficial (Android 4.4.4) са нужни няколко стъпки:

Подготовка:

  1. Компютър с инсталирани HTC USB drivers и USB 2.0 порт, препоръчително с Windows 7. Драйверите за 8/8.1 не са много надеждни, а USB 3.0 портовете не работят по някаква причина с този телефон
  2. USB кабел – най-добре оригиналния. Някои китайски кабели стават само за зареждане, но не и за data transfer
  3. Препоръчително е да работят добре бутоните за звука нагоре/ надолу 🙂
  4. Windroid инструмента от тук: http://forum.xda-developers.com/showthread.php?t=2499926

Отключване на bootloader-a

Всички HTC телефони са със заключен bootloader, но могат да се отключат чрез процедурата описана на http://www.htcdev.com/bootloader

Нов recovery software

Телефонът идва с ограничен recovery software (нещо средно между BIOS и Safe Mode), който е добре да се замени, за да се улеснят всички операции по инсталирането на нов ROM.

Най-лесно това се прави от Windroid като аз flash-нах с TWRP ( за радост автоматично изтегли версия 2.6)

Нов Kernel + ROM

Аз използвах този : http://forum.xda-developers.com/showthread.php?t=2533007 Използва модифициран CyanogenMod 11 M8.1 базиран на Android 4.4.4.

След изтегляне на файла, трябва да се модифицира update-binary или да се изпозлва по-нова версия на TWRP. Към момента на писане  нямаше по-нова официална версия на TWRP, затова просто модифицирах zip файла, както е описано в http://forum.xda-developers.com/showthread.php?t=2532300

След като се модифицира ZIP файла с ROM-a се използва Flash ROM функционалността на WinDroid и се следват инструкциите.

Ако не се модифицра по описания начин се получава следната грешка:

След свършване на операцията в TWRP трябва да се рестартира в recovery mode, за да качи Kernel-а през операцията Flash Kernel
boot.img се намира в главната папка на сваления Custom ROM

Restart и вече всичко би трябвало да е нормално и да се радвате на чисто нов и актуален Android 4.4.4

Има някои неща, които трябва да се конфигурират, за да заработи целия хардуер нормално, но затова в следващите post-ове

Oracle .NET 2 provider разработка под Visual Studio 2013

Така, ето какво е положението:

  • стар код от .NET 3.5
  • използва Oracle .NET 2 provider
  • DataSet-и
  • трябва да се подкара спешно, а има налично само VS 2013

Резултатът е: Exception of type System.Data.Design.InternalException was thrown при отваряне на dataset и при build на проекта.

Повечете предложения за решения се ограничаваха до това, че в xsd файла има директни референции към Oracle Connection String и съответно те причиняват проблем. Това, не беше случая при мене, макар и да имаше доста коментари по Интернет, че решава проблема.

Почти бях изпаднал в безизходица докато не стигнах до http://blogs.msdn.com/b/psssql/archive/2011/04/21/conversion-issues-moving-from-vs-2005-to-vs-2008.aspx. Макар и подобен проблем, пътят до решението беше описан методично и точно! InternalException в System.Data.Design може да се появи само в два случая:

  • Cannot find provider factory named {0}
  • More than one data row for provider named {0}

Аха! И двата имаха нещо общо с provider и то вероятно Oracle-ския. Нещата започнаха да се избистрят – ODP.NET беше инсталиран, но само за 2.0, а VS 2013 използва .NET 4.5 и съответно друг CLR и не може да го намери design time.

И наистина в C:\windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config има

и

Ако тези секции се преместят и в machine.config за .NET 4 всичко, донякъде изненадващо, върви точно.

 

Прикачане на документи към данъчна декларация в НАП

Подписването и прикачването на документи към данъчната декларация в НАП всяка година ми отнема поне по час и всяка година след като открия причината си казвам “Ей сега ще си го запиша, за да не се повтори следващата година”.

И съответно всяка година се повтаря :)) Затова този път реших да го напиша и евентуално догодина да съкратя времето в търсене на проблема.

Подписването на документи се прави с CAPICOM като името на файла се взима от <input type=”file” /> тага и  така разбира кой файл точно да се подпише. Проблемът е, че в IE ( а и други браузъри) от клиентската страна стандартно не може да се прочете пътя до файла (с цел security). Пътят, който се прочита е C:\Fakepath\<името на файла> и съответно се изкарва съобщение от ActiveX контролата файлът не беше открит. (Повече информация на http://acidmartin.wordpress.com/2009/06/09/the-mystery-of-cfakepath-unveiled/ )

Този проблем може да се разреши по два начина:

  • Добавя се сайтът в Trusted sites – така реалният път може да се достъпи от контрола на самата страница
  • Прави се директория c:\fakepath и се поставят нужните файлове вътре :))) (В случай, че по някаква причина не може да се добавят сайтове в Trusted sites)

Разработка за Windows Phone 8 на машина без SLAT

Разработката за Windows Phone 8 изглежда логична стъпка за всеки разработчик на C# като се имат предвид следните предимства

  • Това е C# и Visual Studio 🙂
  • Таксата за регистрация е само 19$
  • След покупката на Nokia поне в обозримо бъдеще нещата изглеждат добре

Най-сериозния проблем е подкарването на емулатора за Windows Phone, тъй като той изисква Hyper-V, което автоматично означава, че е нужно Windows 8 или Windows Server 2012.

На Windows 8, за да се инсталира и работи правилно Hyper-V е необходима задължителна хардуерна виртуализация (сравнително достъпно от повечето PC-та), но и SLAT – i5, i7 и само някои i3 процесори. Почти всички Core2 Duo не поддържат тази възможност. Накратко, ако имате лаптоп по-стар от 2 години шансовете са, че няма да може да пуснете Hyper-V на Windows 8.

Какво пробвах и не работеше – всякакви предложени варианти по интернет, виртуални машини локално и в Azure – Hyper-V не може да се стартира, защото hypervisor is already present (абсолютно вярно).

Това, което се оказа решение (доколкото инсталирането на сървърна OS е решение) е да се използва Windows Server 2012 Standard (Foundation не върши работа, тъй като не поддържа Hyper-V). Тук няма нужда от SLAT, а само от хардуерна виртуализация и No Execute Bit.

В случай, че емулатора изкарва съобщение за грешка е нужно да се обнови VS 2012 до последния update (в момента това е 3)

 

Бърз начин за тестване на натоварване на уеб сайт

След инсталация на Apache в папка binary има прост инструмент за натоварване на уеб сайтове – ab

Важните параметри са два

-n – указва броя заявки, които да се изпълнят

-kc – конкурентни заявки (с keep-alive)

Например:

ab -kc 50 -n 1000 http://www.google.com/

И резултатът е нещо подобно на:

Percentage of the requests served within a certain time (ms)
50%     49
66%     50
75%     53
80%     53
90%     54
95%     55
98%     68
99%     79
100%    103 (longest request)

Което показва, че google се зарежда доста бързо дори и при многобройни конкурентни заявки 🙂

Може да се намерят много статии по въпроса, например : http://www.garron.me/en/go2linux/how-benchmark-stress-your-apache-nginx-or-iis-server.html

 

Информация за всички Windows услуги

Лесен начин за показване на списък с пътищата на всички windows services:

Лесно може да се модифицира, за да се показва друга информация за service-a като:

Поправка на Firebird база данни

Firebird база данни (http://firebirdsql.com/) е отлична база данни с лесна инсталация и добри SQL възможности.

За съжаление файла, в който се съхранява базата данни (.fdb или .gdb) е по-вероятно да се повреди при спиране на тока. Още по-лошо е, че невинаги може да  се разбере веднага, че има проблем и грешките се натрупват.

Обикновено това се забелязва или при backup/ restore операция или при работа с IBExpert. Грешката е подобна на:

wrong (missing?) page #XXXX

или друго подобно, като обикновено се упоменава някакъв page, понякога wrong checksum или wrong pagetype.

За радост положението не е толкова лошо, колкото изглежда. Версиите на Firebird имат винаги checksum 12345 = 0x3039. Размерът на страницата е 4096 байта, но това може да се провери с gstat

Например, ако имаме грешка в страница 23069, то позицията във файла на тази страница е
23069 * 4096 = 94490624 (0x5A1D000)

С hex редактор гледаме какво има на този адрес, например

0x5A1D000: 01 00 3C 30 00 00 …

Това очевидно е сбъркано – вместо 3C 30 трябва да се запише checksum 39 30 (заради endian формата), а първия байт е типа на страницата. Обикновено може да се разбере какъв тип се очаква по грешката, която е възникнала, ако не – тук са описани типовете страници и какво означават.

След закърпването на базата задължително трябва да се направи пълен backup и restore. Важно е да се отбележи, че данните в тази страница най-вероятно са загубени, съответно и част от данните.

Част от информацията е от този линк: http://ybinzu.blogspot.com/2009/08/bad-checksum-firebird.html