середа, 31 жовтня 2012 р.

jquery add row to table


Захотів я виконати просту операцію - додати новий рядок у табличку за допомогою jquery
$("myTable").append("<tr><td>som text</td></tr>")
Як виявилося не все так просто.
На рівні DOM таблиця всередині себе містить тег tbody і рядки слід додавати саме в нього.
Розумні люди підказують що слід писати якось так: 
        $('#myTable > tbody:last').append(myRowHtml)
 Але тут є один нюансик!
Якщо таблиця вже містить якісь рядки тоді все гаразд. 
Проте якщо таблиця порожня, в ній немає елемента tbody і ваш код нічого не додасть!
 
Я викрутився перевіркою кількості дочірніх елементів у таблиці.
 
var table = $('#myTable');
if($(table).children().length == 0)
   $(table).append("<tbody/>") 
$("tbody", table).first().append(myRowHtml);
 
 
 
 

четвер, 25 жовтня 2012 р.

MVC.NET recaptcha ssl https

Потрібно було прикрутити captcha на сторінку mvc.net

Вибрано було функціонал recaptcha.net 
Згенерував глобальну пару ключів на їхньому сайті
Ось тут знайшлася обгорточка для mvc, все гарно і швидко привязлося.
Але яктільки ввімкнувся ssl то рекапча пропала.
Тобто вона реднерила на view код але нічого не показувала!

Покопавшись трішки я зрозумів що вона шле запит, але він блокується.\А блокується він тому що recaptcha.net має прострочений чи якийсь лівий сертифікат ssl
і якщо додати його у список виключень безпеки то все це буде працювати.
Але користувачі вашої сторінки звісно про це не дізнаються і не зроблять...
Пошукавши в гуглі знайшов  відповідь.
Функціонал рекаптчі мігрує плавно на гугл і треба звертатися саме на гуглівський шлях.
Проте він був захардкоджений у коді компонента який не оновлювався вже років зо два.
Отже качаємо сорси проекту, беремо останню версію і трішечки обробивши терпугом запускаємо :)

Особисто я не став тягнути нову бібліотеку а просто зкопіював штук 5 файлів контролу у свій проект і все запрацювавло.


run asp.net on IIS with https from Visual studio 2012

Якщо вам заманулося поставити Visual studio 2012 і ви хочете створити web application та ще й розмістити його на IIS то це може видатися не таким і простим завданням.
За змовчуванням студія запускає вашу програму на IISExpress
Але якщо ви користуєтеся https то там ви не зможете дебажить вашу програму
Тож вам доведеться настроїти все і запускати з під повноцінного IIS.

Перш за все саму студію вам потрібно запускати з правами адміністратора, оскільки інакше вона не буде мати прав для взаємодії з IIS.
Переконайтеся також у тому, що ви не забули встановити власне IIS, бо у Windows7 Ultimate він не стає за замовчуванням.

  1. необхідно зареєструвати .NET Framework 4.5 на IIS 
Для цього виконайте команду:
Run C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i 

     2  створити ключ шифрування ssl
Відкрийте IIS Manager і на головному елементі дерева ліворуч виберіть назву вашої машини, а на середній панелі FiaturesList слід перейти у Server sertificates.
Потім праворуч тицьнути Create Self-Signed Certificate Вибрати якусь назву і зберегти його
    3  у дереві ліворуч вибрати ваш дефолтовий сайт Справа натиснути Bindings і додати https з вашим сертифікатом з кроку 2
 Після цього студію зможе взаємодіяти з вашим IIS і піднімати на ньому вашу програму.

Не забуваємо дати доступ користувачу IIS APPPOOL\DefaultAppPool на вашу базу даних або зробити імперсоналізацію :)

PS
Якщо раптом якийсь дідько перебіжить дорогу і сайт не захоче запускатися як .NET Framework 4 (версія 4.5 теж запускається як 4.0) то потрібно зайти в ApplicationPool і встановити правильну версію фреймворка.

 PPS
Якщо перебігав цілий табун чортів і вам IIS вивалить замість сторінки повідомлення з поясненням що ви не можете міняти розділ хххх у вебконфігу тому що він залочений у системному веб конфігу (зокрема у ApplicationHost.config )...
то у вас буде цікава гра з 64-ю віндою :)

Файл буде лежати тут C:\Windows\System32\inetsrv\config
проте як тільки ви спробуєте улуюбленим notepad++ зайти туди і відредагувати - ви його не зможете знайти. Так відбувається тому що вінда непомітно так підсовує 32х розрядним програмам "C:\Windows\SysWOW64" замість "C:\Windows\System32"
Але ви на ці її розводи не ведіться. Візьміть той файлик, зкопіюйте руками на десктоп, відредагуйте улюленим notepad++ і залийте поверху назад. :)