четвер, 12 лютого 2015 р.

Настройка робочого середовища Parse.com для Windows

1. Потрібно скачати консольну утиліту
https://www.parse.com/downloads/windows/console/parse.zip

2 При першому запуску ParseConsole.exe пропише у глобальні шляхи шлях до parse.exe

Надалі можна запускати так:
Win + R and typing "parse"
  
3 Перейти в консолі у папку з проектом
      якщо це перший запуск, то потрібно виконати команду parse add MyApplicationName
      у відповідь ввести email і пароль
      і вибрати зі списку існуючи проектів для цього облікового запису.

4 Для того щоб почати розробку, введіть  parse develop myProjectName
  • система буде автоматично деплоїти будь які змінені файли у проекті
  • консоль почне виводити помилки на сервері
  • консоль виводитиме інформацію console.log(message);


Щоб побачити який з проектів є позамовчуванню (можна деплоїть без вказання проекту), ведіть
parse default

Щоб встановити ваш проект по замовчуванню
parse default myProjectName


середа, 11 лютого 2015 р.

Parse.com load object with related objects

Потрібно мені показати список об'єктів з таблички Appointment
але при цьому потрібно покзати ім'я замовника.
Appointment має поле customerUser
це pointer на табличку CustomerUser
Вона у свою чергу міститть поле user
яке зилається на табличку User

Слід зауважити що всі ці назви case sensitive!

Отдже щоб разом з нашими об'єктами типу Appointment загрузилися дочірні, ми пишемо наступний код
var query = new Parse.Query(Appointment);
query.include("customerUser");
query.include("customerUser.user");
 
і вже у view використовуємо ці дані так:
<%= appointment.get('customerUser').get('user').get('firstName') %> 

Parse.com date format ejs

Довелося мені зіткнутися з parse.com
Це насамперед хостинг і база даних типу ключ-значення
Серверна сторона на express і node.js (дещо урізана версія з вбудованим переліком модулів, своїх не можна підгрузити)
Для відображення сторінок використовується ejs шаблони

Потрібно: відформатувати дату і час

рішення: на рівні express роутінга додаємо
var moment = require('moment');
 
Далі при рендерингу view передаємо цей модуль туди
res.render('appointment/index', {
    appointments: appointments,
    moment:moment  }); 


і вже у шаблоні використовуємо його так
<%= moment(appointment.get('date')).format('LLL') %>

середа, 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++ і залийте поверху назад. :)