Ежемесячные архивы: Июнь 2012

Определение ОС и браузера пользователя

Определение ОС и браузера пользователя на стороне клиента
Читать далее »

Настройки в соцсетях

ВК

  • Общее
    • Дополнительные сервисы (отображение ссылок сбоку)
    • Настройки стены
    • Изменить пароль
    • Изменить имя
    • Изменить адрес эл. почты
    • Изменить номер телефона
    • Безопасность страницы (показывается активность пользователя)
    • Адрес страницы
    • Настройки языка
    • Настройка внешнего вида — увеличенные шрифты
  • Приватность
    • Кто может видеть мой контент
    • Кто может комментировать
    • Кто может писать ЛС
    • Кто может приглашать в группы
    • И т.д.
  • Оповещения
    • Моментальные оповещения на сайте
    • Оповещения через смс
    • Оповещения по эл. почте
  • Черный список
  • Мобильные сервисы
    • Бесплатный мобильный доступ
    • Отправка фото и записей через емейл
    • Комментарии и ответы через смс
    • Отправка записей через SMS
    • Экспорт записей
    • Баланс

Читать далее »

Работа с вордом

Очень древний код от Ю.Б., еще со времен медтеста. Пусть будет.
Читать далее »

Группировка по датам Linq To Entity

1
.GroupBy(x => new { Year = x.Date.Year, Month = x.Date.Month, Day = x.Date.Day }).ToArray();

Запросы в поисковиках

Данные 2010 года

Табл. 1. Топ-10 запросов к поиску Яндекса 2
1.
в контакте
2.
одноклассники
3.
mail.ru
4.
порно
5.
в контакте вход на сайт
6.
в контакте вход
7.
авто ру
8.
порно онлайн
9.
мой мир
10.
игры для девочек
Подробнее: http://company.yandex.ru/researches/reports/ya_regions_search_2010.xml

Топ запросов яндекс и гугл 1 Год, 10 мес. назад Репутация: 2
Кто знает какие запросы популярны

Например Сравнение запросов россиян в Google Zeitgeist

Топ-15 запросов россиян
агентство недвижимости
создание сайта
пластиковые окна
зимние шины
компьютерная помощь
гостиницы Москва
карта метро
день учителя
толковый словарь
отопление
спартак
гороскопы
корпоративные праздники
бесплатный хостинг
гаражные ворота

http://pastukhov.com/articles/top-yandex-google-rambler
http://company.yandex.ru/researches/figures/ya_movies_2011.xml
http://company.yandex.ru/researches/figures/2012/ya_cold_2012.xml

Что касается пользователей из России, то самые быстрорастущие запросы россиян выглядят следующим образом:

1. смотреть кино онлайн;
2. +100500;
3. vkontakte;
4. ipad 2;
5. biglion;
6. лада гранта;
7. рестораны;
8. игры на двоих;
9. ютюб;
10. одноклассники мобильная версия.

http://www.km.ru/tekhnologii/2011/12/19/yandeks/nazvany-samye-populyarnye-poiskovye-zaprosy-2011-goda

Варианты хранения настроек

1. Одна таблица с множеством колонок
Подходит для настроек, которые есть у всех пользователей в обязательном порядке (например, логин, пароль, почта).
В остальных случаях этот вариант плохой.
2. Таблицы: Пользователи, Настройки, Настройки_Пользователей. Последняя таблица включает в себя ссылки на две первые и поле Значение для настройки.
Плохо тем, что для миллиона пользователей с 50-ю настройками будет 50 миллионов записей в таблице.
3. Предыдущий вариант, только таблицы разделять по тематике. Тогда на миллион пользователей будет всего десять миллионов записей.
Эти варианты можно оптимизировать заданием настроек по умолчанию. Если записи о настройке в базе нет, применяется настройка по умолчанию. Таким образом, количество записей можно сократить.
4. Сериализация. Количество колонок/записей сокращается, но внутренняя структура становится менее прозрачной и более трудной для обработки и сортировки.
5. XML. Хранение пользовательских настроек в XML, с использованем значений по умолчанию.

Ну и наконец, самый лучший вариант — смешанный.

«Жесткие» настройки хранить в одной таблице, на каждую настройку по колонке (Аккаунт)
Разделить настройки тематически (сейчас выделены Приватность и Уведомления)
Использовать настройки по умолчанию
Использовать XML для тех настроек (вместо сериализации — имхо, лучше использовать существующие и проверенные технологии, чем городить свои), по которым не нужно выбирать списки (медленная пакетная обработка для статистики не в счет)
Записывать настройки в сессии

По каким настройкам выборки списков (напр., права доступа к альбуке), а что отн. только к конкретному пользователю

Оптимизация LINQ-запроса

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
var sw = Stopwatch.StartNew();
      for (int i = 0; i < 100; i++)
      {
        var result1 = this.dbContext.Content
          .Select(c => new { Id = c.Id, UploadedDate = c.UploadedDate })
          .Where(c => c.UploadedDate > this.monthAgo)
          .ToArray()
          .GroupBy(c => c.UploadedDate.Date)
          .Select(c => new { Date = c.Key, Count = c.Count() })
          .OrderByDescending(c => c.Date)
          .ToDictionary(c => c.Date, c => c.Count);  
      }
 
      sw.Stop();
      System.Diagnostics.Trace.WriteLine("SW1: " + sw.ElapsedMilliseconds.ToString());
 
      sw.Restart();
      for (int i = 0; i < 100; i++)
      {
        var result2 = this.dbContext.Content
          .Where(c => c.UploadedDate > this.monthAgo)
          .ToArray()
          .GroupBy(c => c.UploadedDate.Date)
          .OrderByDescending(c => c.Key.Date)
          .ToDictionary(c => c.Key, c => c);  
      }
      sw.Stop();
      System.Diagnostics.Trace.WriteLine("SW2: " + sw.ElapsedMilliseconds.ToString());

Переключалка пунктов меню

1
2
3
4
5
6
7
8
9
10
11
12
13
14
var selectNavItem =
    {
        load: function(elem){
            $(elem).addClass("active"); 
            $(elem).siblings(".nav li").removeClass("active");
        },
 
        menuClick: function(){
            $(".nav li").click(function () {
                $(this).toggleClass("active");
                $(this).siblings().removeClass("active");
            });
        }
    }

Про компьютер для детей

Х Хасэгава Мир компьютеров
Зарецкий, Труханов, Зарецкая Энциклопедия профессора фортрана

Пример структуры сайта на ASP.Net

Базовый сервис

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace Example.Data.Services
{
    public abstract class BaseService : IDisposable
    {
        protected ExampleContext context;
 
        protected BaseService()
        {
            context = new ExampleContext();
        }
 
        public void Dispose()
        {
            context.Dispose();
        }
    }
}

Читать далее »

Мегафункция для тегов

Задача: в базе хранятся теги и теги к контенту (связь тег-контент).
Пользователь вводит свои теги (String[] tagTitles) к контенту.
Среди введенных пользователем тегов могут быть как совсем новые, так и уже существующие в базе.
Новые теги необходимо добавить в таблицу тегов и в таблицу связи тег-контент.
У уже существующих тегов необходимо увеличить поле количества использований на 1.
Читать далее »