Windows adjustments

Steps to adjust windows after install

Do not use C: drive for app stuff

SETX /M ANDROID_SDK_HOME D:\Android\home
Оставить комментарий
* * *
* * *

Using Zurb Foundation as SCSS framework in your project

Prepare environment

npm install -g bower grunt-cli

gem install foundation
gem install compass
gem install bundler

Create project

foundation new MY_PROJECT
bundle
Оставить комментарий
* * *

Angular JS: input[time] Error: error:datefmt Model is not a date object

If you whant to map string value to <input type="time"> you will get Error: error:datefmt Model is not a date object from angular 1.3 and upper.

Solution is to use string to date conversion directive. Like this one:

JsFiddle working example
.directive("strToTime", function () {
    return {
        require: 'ngModel',
        link: function (scope, element, attrs, ngModelController) {
            ngModelController.$parsers.push(function (data) {
                if (!data)
                    return "";
                return ("0" + data.getHours().toString()).slice(-2) + ":" + ("0" + data.getMinutes().toString()).slice(-2);
            });

            ngModelController.$formatters.push(function (data) {
                if (!data) {
                    return null;
                }
                var d = new Date(1970, 1, 1);
                var splitted = data.split(":");
                d.setHours(splitted[0]);
                d.setMinutes(splitted[1]);
                return d;
            });
        }
    };
});
Оставить комментарий
* * *

Boostrap scrollspy does not work in Chrome but works in Firefox

The reason for this problem is:

"Non-:visible target elements ignored Target elements that are not :visible according to jQuery will be ignored and their corresponding nav items will never be highlighted."

:visible has different behavour in Firefox and Chrome.

For example following HTML is invisible in Chrome, but visible in Firefox:

<a id="home"></a>

Bootstrap commit where :visible check is enabled: https://github.com/twbs/bootstrap/commit/5a38a5775f8a3c58c09df0a0f3afc058c820c238

Оставить комментарий
* * *

Orchard CMS: .less, .woff files are 404 Not Found

If .woff, .svg, .less, .map files are not accessable from frontend, you need to add those file extensions to web.config of current folder.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <appSettings>
    <add key="webpages:Enabled" value="false" />
  </appSettings>
  <system.web>
    <httpHandlers>
      <add path="*" verb="*" type="System.Web.StaticFileHandler" />
    </httpHandlers>
  </system.web>
  <system.webServer>
    <staticContent>
      <clientCache cacheControlMode="DisableCache" />      
      <remove fileExtension=".woff"/>
      <mimeMap fileExtension=".woff" mimeType="application/x-font-woff" />
      <remove fileExtension=".svg"/>
      <mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
      <remove fileExtension=".less" />
      <mimeMap fileExtension=".less" mimeType="text/css" />
      <remove fileExtension=".map"/>                 
      <mimeMap fileExtension=".map" mimeType="application/octet-stream" />
      <remove fileExtension=".7z"/>                 
      <mimeMap fileExtension=".7z" mimeType="pplication/x-7z-compressed" />
    </staticContent>

    <handlers accessPolicy="Script,Read">      
      <add name="StaticFile" path="*" verb="*" modules="StaticFileModule" preCondition="integratedMode" resourceType="File" requireAccess="Read" />
    </handlers>
  </system.webServer>
</configuration>
Оставить комментарий
* * *

Could not load file or assembly Microsoft.Data.Services.Client

Problem:

Reference.svcmap: Could not load file or assembly 'Microsoft.Data.Services.Client, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.

Solution: is to install WCF Data Services. Ms Download

Оставить комментарий
* * *

Web.config Transformation

Если вам нужны различные web.config для разных типов сборок (Release, Debug), то хорошим решением будет использовать технологию Web.config Transformation.

Суть в том, что вы создаёте базовый web.config, а потом создаёте файл трансформации для него под каждый тип сборки.

web.config и его трансформации
web.config и его трансформации

Поиграться с трансформациями можно с мощью севриса webconfigtransformationtester.apphb.com.

В Visual Studio можно кликнуть на файл трансформации и выбрать в меню опцию Preview Transformation.

Оставить комментарий
* * *
* * *
* * *

Update to Orchard 1.8: You do not have permission to complete your request

If after update to Orchard CMS 1.8 you see following error message:

Access Denied
You do not have permission to complete your request.

Try to run following SQL on your database.

Update Orchard_Framework_ContentItemRecord SET Data = '<Data><SiteSettingsPart SuperUser="admin"/></Data>' Where id = 1
Оставить комментарий
* * *

.Net WiFi API и подбор паролей к WiFi

Давно мечтал написать программку, которая бы проверяла WiFi сеть на использование простых паролей, вроде 123456789. Список таких паролей не особенно велик, потому можно не заморачиваться со снифаньем пакетов, a потом c их расшифровкой, как это делают настоящие хакеры.

В рунете ходит програмка WiFi Cracker, которая написана на .Net C# и использует библиотеку Managed Wifi API.

Суть работы с WiFi из управляемого кода довольно проста. В Windows для беспроводных сетей есть профили - фактически это XML с настройками подключения: паролем, алгоритмом шифрования и авторизации и т.п. (см. Profile examples). WiFi Cracker генерирует профиль подсовывает его WinApi функцию и ждёт, что получится. На проверку подключения может уходить от нескольких секунд до минуты. Сложность же в том, что Managed Wifi API — это очень легковесная надстройка над WinAPI, и формирование правильного профиля возлагается на пользователя библиотеки. Разаботчик WiFi Creacker'а что-то попытался на эту тему сделать, но всё равно его программа не поддерживает некоторые сети.

Библиотека SimpleWiFi основана на Managed Wifi API, но берёт формирование профиля на себя. Пользователю библиотеки не надо вытаскивать из параметров сети настройки шифрования и авторизации, всё это SimpleWiFi сделает автоматически. SimpleWiFi содержит различые шаблоны профилей, что позволяет ей работать с очень широким кругом сетей. Да и с задачей ожидания результатов подключения SimpleWiFi справляется лучше.

Единственное, что плохо в этой библиотеки, так это то, что она предоставляет очень бедный public API. Например, скрывает всю информацию о сетевом интерфейсе. Потому я решил седелать форк библиотки на github'е, сделать всё internal члены public'ами и работать уже с такой версией библиотеки.

В итоге, на базе SimpleWiFi у меня получилась вот такая консольная утилита WifiBruteforce, на примере которой можно посмотреть как можно использовать библиотеку SimpleWiFi.

Оставить комментарий
* * *

EJS samples

Quoted HTML output

Code:

<%= "<b>Bold</b>" %>

Output:

&lt;b&gt;Bold&lt;/b&gt;

Raw HTML output

Code:

<%- "<b>Bold</b>" %>

Output:

<b>Bold</b>

Raw javascript string output

Code:

var title = <%- JSON.stringify(title) %>

Output:

var title = "Tioman";
Оставить комментарий
* * *

Аутсорсинг in real life

Последние пару недель я работаю над ремонтом яхты: там нам надо сделать очень много всего в салоне, с верёвками, парусами. Выравнивание и покаску бортов наш капитан отдал на "аутсорс" местной бригаде рабочих. Поработая параллельно с этими ребятами, я увидел хорошую иллюстрацию того, что часто творится на проектах, где часть работы выполняют аутсорсеры.

Оставить комментарий
* * *

NHibernate.HibernateException: The length of the string value exceeds the length configured in the mapping/parameter.

I have found NHibernate.HibernateException: The length of the string value exceeds the length configured in the mapping/parameter. in your Orchard CMS log.

SchemaBuilder.CreateTable(typeof(ServiceRequestCacheRecord).Name, table => table
                .Column<int>("Id", x => x.PrimaryKey().Identity())
                .Column<int>("ServiceId")
                .Column<string>("RequestKey", x => x.WithLength(50))
                .Column<string>("Data", x=> x.Unlimited())   
                .Column("LastUpdate", DbType.DateTime)
            );

The problem was in "Data" column, it stores long json. It was created by Orchard in MS SQL Server 2008 database as nvarchar(MAX), but NHibernate does not allow to insert 20 000 length string to it.

The solution is to put [StringLengthMax] attribute to Data field.

public class ServiceRequestCacheRecord
{
        public virtual int Id { get; set; }
        public virtual int ServiceId { get; set; }
        public virtual string RequestKey { get; set; }
        [StringLengthMax]
        public virtual string Data { get; set; }
        public virtual DateTime? LastUpdate { get; set; }
}
Оставить комментарий
* * *