Как стать автором
Обновить
4
0
Даниил Барвицкий @borv

Пользователь

Отправить сообщение
Спасибо за статью. Пара моментов:

0) (цитата, вольный перевод) «Шарапыра — каша из топора, многое в ней сделано в духе практического дзен-программизма»
1) От правки WebConfig лучше воздержаться. На SharePoint best practices в этом году очень ругались на эти штуки. И вообще, дружите с www.codeplex.com/wspbuilder
2) Полезная комбинация — PSExec+STSADM(+NAnt для неленивых)
3) Т.к. assemblies in GAC — неизбежное зло, рекомендуется озаботится .NET remote debugging
4) Полезно помнить про перезагрузку пула (iisapp.vbs /a «SharePoint — 80» /r или iisreset) иначе последние обновления в GAC не поднимутся
5) Любите SPVisualDev, больше все равно некого.
Из недавнего (задавали на интервью).

№1: Написать функцию int atoi(String), для парсинга чисел в -7-ичной записи (основание системы счисления — минус семь). Спрашивают можно ли написать функцию format() для этой системы счисления (надо объяснить почему).
№2: Написать класс «синглетон». А потом найти ошибку (все забывают synchronized).
№3: Написать редиректор потока с методом redirect( InputStream sfrom, OutputStream sto ) (внутри надо создать поток и догадаться его закрыть вовремя). Предложить использовать это для управления консольным приложением (читаем out-пишем in по строчкам). Запустить под линь (в их случае правда был AIX) и объяснить почему не работает (кэширование труб в ОС)
№4: Дают двухтердовое приложение, которое хватает дедлок. Предлагают найти проблему.
№5: Дают аппликуху которая выносит яву по нехватке памяти. Делается это путем создания большого графа ссылок. Предлагают объяснить что случилось и «поправить». Проблема как я понял была в том, что gc не успевал прошуршать по всему графу, а аппликуха создавала уже новый.
№6: Есть лог (w3c, например), надо заменить все похожие строчки идущие подряд на одну. Типа 01/01/2001 login bob\n 01/01/2001 login sam \n заменить на 01/01/2001 login **** (x 2). Смотрят на то, как пытаешься сформулировать «похожесть» и как пытаешься ее вычислить.
№7: Дают интерфейс 3-мерного куба (get(x,y,z)/set(x,y,z),sizeX(),sizeY(),sizeZ()). Предлагают сделать реализацию. Потом с ней построить кубик 1Mx1Mx1M, заполнить в нем 2M точек целыми значениями. Затем каждую точку куба заменить на среднее арифметическое точек в округе. Если делаешь трехмерный массив предлагают увеличить сторону куба до 10^10. Хотят увидеть объектное моделирование и аналог two phase commit (чтобы точки расчитанные на i-m шаге НЕ влияли друг на друга).
№8: Просят написать кэширующий калькулятор. Типа ему дают арифметические выражения с переменными и без скобок и (a+b-c*d/e), он должен найти в кэше подвыражения (a+b и c*d/e) и сделать расчет с использованием результатов выражений. Хотят увидеть класс Expression, который умеет парсить выражения, приводить их к нормальному виду и делать хитрые compareTo(), hashCode() и equals() чтобы Map с ним работал.
№9: Просят сделать переменное количество вложенных циклов (дали N-мерный массив каждую точку заполнить суммой ее координат). Хотят увидеть злобный итератор. Стек и рекурсию не принимают.

Мне понравилось — все задачи имеют решения по паре страниц или около того.
Несколько лет назад использовался самописный гавнаскрипт на перле. Из кучи папочек файлами, ресурсами, ${разметкой} и ${макросами} делается LATeX и HTML.
Из приятностей:
1) наотличненько сочитается с SVN и eclipse, оформление меняется не зависимо от контента (путем хачения скрипта)
2) Удобно включать всякие полезности вида картинок-диаграмок-сырцов (все с версиями!)
3) Снапшоты, версии и бранчи делаются на уровне SVN вместе с сырцами. Хотя такого чтобы на бранч документацию писали отдельную моя седая голова не припомнит ;-)
4) 0-install, перлоскрипт прилетает по «svn get...».
5) типографский вывод для печатной доки.
6) один исходник для разных форматов (ну, партитура для танца с бубном прилагается)

Из неприятностей похода:
1) Нет визуального редактирования (техрайтера мелко колбасило при виде эклипса, с подавляемыми рвотными позывами)
2) Проверка орфографии штатная из эклипса (не удобно, как результат туча очепяток). Почти помог проход ispell.
3) Генеряемое не отличается читабельностью на уровне кода. Периодически бывают косяки вида ускакавших хрен знает куда иллюстрации в DVI, overfull/underfull в пол-страницы, косяки в HTML коде и прочее. Так как доку генеряют за 3 часа до релиза, обычно это довольно стрессовые моменты.
4) Перлоскрипт становится священной коровой, обретает интеллект, характер, астральное тело и начинает требовать жертвоприношений.

С того момента были предприняты попытки писать доки в sharepoint-е (стартует на ура, но получение печатной копии — непреодолимая проблема, снапшот для релиза — делается через API большой геморрой). В итоге чуется вернемся к перлу. Вопрос по сей день открыт.
У нас был в ходу термин «Джа#», где-то даже валялась подборка избранного. Классический пример — как узнать дату завтрашнего дня (шутка такая):

public Calendar getTomorrow() {
    Thread.sleep(1000*60*60*24);
    return Calendar.getInstance();
}
Старость - это когда узнаешь о "популярных сервисах в интернете" из новостей о приобретении их Гуглем. Эх...
Посмотрел презентацию и представил себе семнадцатитомник "CSS 8.0 и presentation objects для IE, Mozilla и Opera" из серии "для чайников". Не, не взлетит.

Если серьезно:
- Где блин любимый всеми мультитач?
- 3D-метафора для истории - это порно. Либо список, либо дерево, с поиском, остальное от лукавого.
- 3D-мышка - это порно. Они бы еще клавиатуру на шею повесили.
- Хистори из иконок - это тоже порно, даже если иконка не размером с кулак и монитор во всю стену, с расстояния, достаточного для обозревания, ни хрена не разобрать.
- Презентационные объекты - это хорошо. Вопрос только в их количетсве.
- Микроформаты в качестве источника данных - тоже очень хорошо. Вопрос только в их стандартизации.
- То, что они таскаются и копируются куда не попадя - это очень плохо. Авторы ролика забыли 15-страничный визард, который будет вылазить после перетаскивания презентационного объекта Dundas Presentation Object на Generic Pivot Table. Так же они забыли сообщение вида "Вася Пупкин хочет использовать презентационный объект ХХХ версии YYY, нажмите ОК чтобы скачать и установить". И следом за ним "Компонент ZZZ требует обновления ABCD..." и еще десятка таких же.
- Такую колаборацию я в гробу видал в белых тапках, простите. Нет сухого остатка, ни архива переписки, ни чата, ни лога исправлений... Для бизнеса не покатит, а потрындеть и по видеотелефону можно.
Айфон в Америке - тоже средство общения. А общаются они посредством айфона примерно так:
Джо: Привет, Мэри, как дела
Мэри: Привет, Джо, нормально, была в NY
Джо: Чего нового?
Мэри: Да так... Купила новый айфон
Джо: HS!!! OMG!! ПОКАЖИ!!!!

...тут и начинается общение... ;-)))
У нас была колбаса, водка и пиво, у них - маленький телефон с надкушенным яблоком. Но идея одна и та же: людям жизненно необходимо средство общения.
Во-первых: "небольшое снижение производительности у связей, построенных на базе gUID" - наличие или отсутствие "не" в первом слове зависит очень много от чего. Просто нагенерить 70 миллионов гуидов - это уже целое дело. А это, например, всего-навсего трудовой день в NYSE.

Во-вторых: часто на основе ID строятся какие-нибудь коды, которые где-то печатаются. За номера заказа в виде guid надо расстреливать из крупнокалиберного пулемета не отходя от кассы, имхо. Чтобы это прочувствовать - попробуйте прочитать номер заказа девочке-операторше по мобилке, ага.

В-третьих: проблема foreign data purge, возникающая при сливании наборов данных из разных источников, практически не решается на основе идентификаторов - нужны natural keys. То, что в БД аптеки я под номером 1234567890, а у страхового агента - под номером 0987654321 ни чем не помогает, простите.

Ну и, наконец, в последних: слово "Евангелие" плохо сочетается со 128 битами.
12 ...
8

Информация

В рейтинге
Не участвует
Откуда
Wethersfield, Connecticut, США
Дата рождения
Зарегистрирован
Активность