Архив за 23 сентября 2013 - 8

Миллион Велосипедов — привет автомобилистам!

Привет!

Велосипед — это один из лучших друзей разработчика. После того, как просидел весь день перед компом, самое то покрутить педали по дороге домой!

Точно также приятно покрутить педали и с утра перед работой, а не стоять в пробке или дышать вирусами в метро. Я даже в качестве последнего офиса специально выбирал большую квартиру, чтобы был душ, в котором можно помыться после хорошего веловкрута.
Читать полностью »

Зашел вечером 20.09 проверить почту и увидел письмо от Microsoft Ukraine. Довольно интересно. Как раз заканчиваю приложение делать. Думаю грех не принять участие. Но возникла проблема. По ссылке для регистрации переходит и пишет, что такой страницы нет(. Попробовал в разных браузерах — то же самое. Поискал информацию на сайте майкрософта. Потом в гугле. Никаких результатов. А столько радости было, что вспомнили про Украину, ведь в России, Белоруссии уже такие конкурсы не первый раз проходят.

Может кто-то еще получал похожее письмо и ссылка работает. Поделитесь с обществом плиз.

Вот скрин письма
Читать полностью »

image

Привет!

Немного наблюдений.

По предложенному вопросу пергамента исписано непозволительно много. Тем не менее, я бы хотел остановится на трех важных, но игнорируемых аттрибутах, свойственных email-у, с точки web-разработки.
Во первых email уникален, в отличии от никнейма, который, в половине случаев, занят кем-то до нас. Однако все еще встречаются сайты с логином по никнейму, который, для всех таких сайтов, ну никак не упомнить. Предлагаю использовать для логина только email.
Во вторых, часть разработчиков игнорирует type='email', когда JS валидаторы нантравлены на это поле, и планшетные устройства переключают раскладку, что удобно.
В третьих, ради чего это статья, каждый год пишутся статьи вида «Почему плохо валидировать регекспом», что больше похоже на фетишь. Надеюсь гугл проиндексирует верно.

Собственно вся преамбула ради одного интересного решения, которое должно помочь Ruby-стам, не исключено, что в других языках подобный метод тоже реализуем.

Читать полностью »

Компания MX Camera (DEO-Tech), занимающаяся выпуском принадлежностей для фотосъемки, готовит к выпуску два переходника, которые должны появиться на рынке в декабре.

Первая новинка носит название Falcon. Он рассчитан на использование совместно с полнокадровыми камерами Sony NEXЧитать полностью »

Я приветствую всех жителей Хабрахабра! Всем удачной новой рабочей недели! Итак, мы продолжаем процесс миграции базы данных на использование SQL Azure Federations. Как вы помните, в прошлый раз мы решили, по какой таблице и по какому полю мы будем разбивать базу данных на шарды. Давайте же наконец это сделаем!

Миграция

Итак, будем разбивать базы данных по таблице аккаунтов (Account), поскольку данные, хранящиеся в ней и связанные с ней логически друг с другом не пересекаются. Поскольку у нас есть скрипт создания базы данных, попробуем адаптировать его для использования SQL Azure Federations.

Будем считать, что база данных уже создана в Windows Azure Management Portal либо через SQL Server Management Studio.

Откроем скрипт создания объектов в базе данных.
USE xPenses
GO

IF EXISTS (SELECT name FROM sysobjects where name = N'Operation') DROP TABLE Operation
...

Первое, что необходимо убрать это использование операции USE, т. к. это одно из основых ограничений SQL Azure. Одна база данных — одно соединение. Вместо этого добавим запросы на создание федерации:
-- A database must be selected before executing this statement
CREATE FEDERATION Accounts(AccountId BIGINT RANGE)
GO

USE FEDERATION Accounts(AccountId = 1) WITH RESET, FILTERING = OFF
GO

Обратите внимание, что допустим, подключившись с помощью SSMS к SQL Azure Server необходимо выбрать базу данных из списка, для выполнения запроса.

Горизонтальное масштабирование базы данных реального проекта с помощью SQL Azure Federations. Часть 3: Миграция

Таким образом мы создадим новую федерацию, данные которой распределяются по значению идентификатора аккаунта (Account ID). Обратите внимание, что на данный момент никаких таблиц в базе не создано, то есть поле AccountId не связано ни с каким набором данных в реальных таблицах. Имя поля также может отличаться от имени поля таблицы, по которому будет производиться распределение.

Здесь мы можем увидеть еще одно, логичное, ограничение SQL Azure Federations. Поле, по которому будет будет осуществляться распределение должно иметь тип INT, BIGINT, UNIQUEIDENTIFIER и VARBINARY.

После создания федерации, нам необходимо выбрать первый шард, в который мы начинаем вносить данные. То есть шард, хранящий данные первого аккаунта (AccountId = 1).

Смотрим наш скрипт далее. Нам необходимо модифицировать создание таблицы аккаунтов таким образом, чтобы SQL Azure знал, что данные именно этой таблицы по полю Id будут распределяться по шардам.
CREATE TABLE Account (
[Id] INTEGER NOT NULL PRIMARY KEY IDENTITY(1,1),
[EntityId] INTEGER NOT NULL FOREIGN KEY REFERENCES Entity(Id),
[Currency] NVARCHAR(3)
)

Таким образом скрипт создания таблицы превратится в следующий:
CREATE TABLE Account (
[Id] BIGINT NOT NULL,
[EntityId] INTEGER NOT NULL FOREIGN KEY REFERENCES Entity(Id),
[Currency] NVARCHAR(3),
CONSTRAINT [PK_Account] PRIMARY KEY CLUSTERED
(
[Id] ASC
)
) FEDERATED ON (AccountId= Id)

Итак, что же изменилось? Тип поля ID стал BIGINT. Кроме этого, мы лишились возможности автоматической генерации значения для этого поля при вставке новой записи. Это является еще одним из ограничений SQL Azure Federations. Однако сохраняется возможность использования ключевого слова DEFAULT. Это к примеру будет полезно, если тип поля ID будет UNIQUEIDENTIFIER. В этом случае мы можем объявить поле таким образом:
[Id] UNIQUEIDENTIFIERNOT NULL DEFAULT NEWID()

Тогда при вставке новых записей в таблицу, нам нет необходимости указывать ID создаваемой записи. При работе с остальными типами эта логика должна быть реализована на уровне приложения.

Следующее, на что стоит обратить внимание — это объявление основного ключа таблицы. Нам необходимо явно указать то, что создаваемый ключ будет кластерным.

Последнее, что необходимо сделать, это указать с помощью ключевого слова FEDERATED ON, что данная таблица будет являться federated. Данные в ней мы будем разбивать по полю ID.

Итак, с создание таблицы аккаунтов мы разобрались. Едем дальше. Как видно из схемы базы данных, таблица аккаунтов является родительской по отношению к таблицам «кредитная карта» и «банковский счет».

Горизонтальное масштабирование базы данных реального проекта с помощью SQL Azure Federations. Часть 3: Миграция

Читать полностью »

Доброго времени суток, %USERNAME%! Мы хотим поделится со всем сообществом разработчиков отличной новостью — мы (в лице компании Zingaya) запустили облачную платформу для разработчиков коммуникационных сервисов и приложений, благодаря которой вы теперь можете легко добавить поддержку аудио и видео коммуникаций, а также телефонии в свое веб или мобильное приложение. Итак, встречайте VoxImplant

VoxImplant — облачная платформа для разработчиков коммуникационных сервисов и приложений

VoxImplant обладает рядом уникальных особенностей, которые вы не встретите в других коммуникационных платформах. Мы подробнее расскажем о них и о том какие возможности вам предоставляет платформа под катом.
Читать полностью »

Если бы мы сначала узнали, где мы находимся и куда стремимся, то могли бы решить, что делать и как этого достичь

16 июня 1858 года, за три года до начала гражданской войны в США, во время дебатов со своим противником на выборах в cенат Стивеном Дугласом, будущий президент Авраам Линкольн произнес одну из своих самых известных речей — «Дом Разделённый».
Будучи, возможно, самой известной антирабовладельческой речью, она (как и политика, продвигаемая Линкольном в отношении рабства), вызвала бурные обсуждения и негодования со стороны политически-активного населения южных штатов. Линкольн был противником рабства в целом и в частности противником распространения рабства на новые территории, и считал, что в новообразующихся штатах все граждане должны быть свободными по умолчанию.

Это шло в разрез с образом жизни южных штатов, аграрная экономика которых существовала исключительно благодаря рабскому труду и освоению новых территорий. Магнаты, которые владели огромными плантациями и тысячами рабов, имели огромное политическое влияние в южном регионе и, естественно, поддержку белого населения этих штатов. Ведь вся промышленность была сосредоточена на севере, и с отменой рабства южным штатам грозил крах экономики, которая больше ничем подкреплена не была.
Естественно, это так же грозило потерей огромных капиталов магнатов, ведь в результате отмены рабства они теряли не только свое влияние, но и средства, вложенные в плантации и аграрную промышленность.

Выборы в Сенат Линкольн проиграл, тем не менее, подготовив себе крепкую почву для президентских выборов, которые прошли два года спустя. Победа Линкольна на этих выборах привела к расколу страны и началу гражданской войны между свободными северными и рабовладельческими южными штатами, многие из которых объявили о своем выходе из состава США еще до инаугурации нового президента.

Читать полностью »

1998 год, Студия Pixar. Полным ходом идет создание «Истории игрушек 2». В процессе участвует более 150 человек. Размер исходных материалов анимации составляет 10 ГБ (по тем временам это очень много). Каждый день строится полный бэкап на ленту. Кассета имеет размер… 4ГБ (данные при записи на ленту сжимаются, но, конечно, не до такой степени). Каждый раз выдается ошибка, но этого никто не замечает, потому что лог-файл располагается на этой же кассете и пишется в самом конце бэкап-задания, а, поскольку места на кассете уже нет, он имеет размер 0 байт. Каждую неделю проводится тестовое восстановление данных, в ходе которого проверяются первые 2000 кадров анимации. И, конечно, каждый раз тест проходит успешно.

… А потом вдруг наступил день, когда кто-то из сотрудников (ошибочно или намеренно) запустил на сервере команду "/bin/rm -r -f *" (или аналогичную), которая удалила 90% из 100,000 файлов исходников анимации. Один из сотрудников компании, Ларри Катлер, как раз просматривал файлы папки с исходниками анимации, собираясь откорректировать что-то в модели шляпы персонажа Вуди, как вдруг он заметил, что файлов в папке осталось всего 40… потом 4… а еще через секунду их там не осталось вовсе. Ларри позвонил в ИТ службу и сообщил, что "произошла масштабная потеря данных", и что "восстановление потребует полную резервную копию..." Которой, как выяснилось чуть позже, у них не было, несмотря на ежедневный бэкап.

Читать полностью »

Проходим техническое интервью. Вредные советы

  1. Помни, что ты на рынке. Твоя главная и единственная задача продать себя как можно дороже. Ты и потенциальный работодатель по разные стороны баррикад.
  2. Тебе никто не предлагает вакансию короля, поэтому точность не для тебя. Лучше опоздать. И никогда не предупреждай об опоздании. Это придаст тебе значимость. Интервью много, а ты один. Подождут.
  3. Небрежная прическа, майка, кеды, мятые брюки и iPad (не забудь сразу его поставить перед собой и периодически тыкать в него пальцем) подчеркнут твою принадлежность к матерым программистам.
  4. Читать полностью »

Multipath TCP (RFC 6824) — это расширение протокола TCP, которое позволяет использовать несколько каналов связи в рамках одного соединения. Например, если сервер поддерживает Multipath TCP, то его можно подключать к сети по нескольким каналам Ethernet.

В случае с iOS 7 поддержка Multipath TCP означает, что телефон способен одновременно использовать 3G и WiFi.

Multipath TCP до сих пор не утверждён в качестве единого стандарта. В январе этого года RFC 6824 приняли в качестве экспериментального стандарта, а в июле сообщалось о трёх вариантах реализации Multipath TCP. Разработчик одного из вариантов обнаружил поддержку технологии в операционной системе iOS 7. По его словам, это первое крупномасштабное испытание новой технологии.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js