- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
$timeout(function(){
$rootScope.presentation_details = {
"name" : $rootScope.presentationDetails.name,
"description" : $rootScope.presentationDetails.description,
"lastUpdatedView" : $rootScope.presentationDetails.lastUpdatedView,
"projectId" : $rootScope.presentationDetails.projectId,
"presentationId" : $rootScope.presentationDetails.presentationId,
"reimbursementRate" : $rootScope.presentationDetails.reimbursementRate,
"isTemplate" : $rootScope.presentationDetails.isTemplate,
"authorId" : $rootScope.presentationDetails.authorId,
"authorName" : $rootScope.presentationDetails.authorName,
"IsNewPresentation" : false,
"gDocsId" : $rootScope.presentationDetails.gDocsId,
"parameters" : {
"widgetURL" : $rootScope.presentationDetails.parameters.widgetURL,
"widgetIFrameUrl" : $rootScope.presentationDetails.parameters.widgetIFrameUrl,
"widgetTextareaContent": $rootScope.presentationDetails.parameters.widgetTextareaContent,
"widgetTotalEGinGasSaved" : $rootScope.presentationDetails.parameters.widgetTotalEGinGasSaved,
"widgetTotalEGinFewerVehicles" : $rootScope.presentationDetails.parameters.widgetTotalEGinFewerVehicles,
"widgetHowDoesSolarWorkStepFourDuration" : $rootScope.presentationDetails.parameters.widgetHowDoesSolarWorkStepFourDuration,
"widgetHowDoesSolarWorkOverallDuration" : $rootScope.presentationDetails.parameters.widgetHowDoesSolarWorkOverallDuration,
"widgetGraphWeather" : $rootScope.presentationDetails.parameters.widgetGraphWeather,
"wIdgetGraphTemperatureChartType" : $rootScope.presentationDetails.parameters.wIdgetGraphTemperatureChartType,
"widgetGraphTemperature" : $rootScope.presentationDetails.parameters.widgetGraphTemperature,
"widgetWeatherType" : $rootScope.presentationDetails.parameters.widgetWeatherType,
"transitionOut" : $rootScope.presentationDetails.parameters.transitionOut,
"transitionIn" : $rootScope.presentationDetails.parameters.transitionIn,
"parametersId" : $rootScope.presentationDetails.parameters.parametersId,
"subheaderFont" : {
"fontId" : $rootScope.presentationDetails.parameters.subheaderFont.fontId,
"size" : $rootScope.presentationDetails.parameters.subheaderFont.size,
"name" : $rootScope.presentationDetails.parameters.subheaderFont.name,
"color" : $rootScope.presentationDetails.parameters.subheaderFont.color,
"visible" : $rootScope.presentationDetails.parameters.subheaderFont.visible,
"label" : $rootScope.presentationDetails.parameters.subheaderFont.label,
"content" : $rootScope.presentationDetails.parameters.subheaderFont.content,
},
"normal2Font" : {
"fontId" : $rootScope.presentationDetails.parameters.normal2Font.fontId,
"size" : $rootScope.presentationDetails.parameters.normal2Font.size,
"name" : $rootScope.presentationDetails.parameters.normal2Font.name,
"color" : $rootScope.presentationDetails.parameters.normal2Font.color,
"visible" : $rootScope.presentationDetails.parameters.normal2Font.visible,
"label" : $rootScope.presentationDetails.parameters.normal2Font.label,
},
"backgroundImage" : $rootScope.presentationDetails.parameters.backgroundImage,
"backgroundImageVisible" : $rootScope.presentationDetails.parameters.backgroundImageVisible,
"backgroundImageLabel" : $rootScope.presentationDetails.parameters.backgroundImageLabel,
"backgroundColor" : $rootScope.presentationDetails.parameters.backgroundColor,
"backgroundColorVisible" : $rootScope.presentationDetails.parameters.backgroundColorVisible,
"backgroundColorLabel" : $rootScope.presentationDetails.parameters.backgroundColorLabel,
"widgetIndex" : $rootScope.presentationDetails.parameters.widgetIndex,
"rowPosition" : $rootScope.presentationDetails.parameters.rowPosition,
"colPosition" : $rootScope.presentationDetails.parameters.colPosition,
"rowCount" : $rootScope.presentationDetails.parameters.rowCount,
"colCount" : $rootScope.presentationDetails.parameters.colCount,
"duration" : $rootScope.presentationDetails.parameters.duration,
"startDate" : $rootScope.presentationDetails.parameters.startDate,
"endDate" : $rootScope.presentationDetails.parameters.endDate,
},
};
}, 10);
Заглянул в код текущего проекта... Зря тимлид не проводит кодревью... У кого есть идеи нахеряки?
Vasiliy 06.08.2014 13:39 # +1
kegdan 06.08.2014 14:24 # 0
Vasiliy 06.08.2014 14:32 # 0
kegdan 06.08.2014 14:37 # 0
василий запорол дедлайны
и премии лишил отдел
и хоть я был в другом проэкте
сьел за компанию кусок
1024-- 06.08.2014 15:24 # 0
Во-первых, намоделировали на компе эмуляцию театра с картонными фигурками, когда можно было запилить мультфильм с нормальными движущимися героями.
Во-вторых, написали какое-то подобие стихов с годным ритмом, но без рифмы, которое читают как стихи. Когда слышишь, хочется сразу дать в морду авторам, поскольку часто очевидно, какое слово с каким рифмуется, но они специально это выпиливают!
Будто бы купили права у американцев, но на рифму и нормальную анимацию не хватило - пришлось всё в последний момент менять, чтобы копирасты не засудили.
eth0 06.08.2014 20:38 # 0
Перашки?
1024-- 06.08.2014 21:10 # 0
P.S. arkady-paravozov.ru - неповторимый авторский стиль проявляется во всём.
kegdan 06.08.2014 22:03 # 0
1024-- 06.08.2014 22:17 # 0
После прослушивания закадрового текста Паровозова жить уже не хочется.
kegdan 06.08.2014 22:29 # 0
поедем девушка со мною
и поиграем в городки
уже запарился за месяц
кидать я биту сам себе
TarasB 07.08.2014 16:34 # 0
inkanus-gray 06.08.2014 16:52 # 0
Да ради Бога!
Нужна мне ваших слов печаль!
Я позабыл уж путь-дорогу
Что к вам вела сквозь мрака даль.
Махнув рукой на злые сплетни
Что выплели сетьми вокруг
Я бросил пить назло соседям
И отвернулся лучший друг.
Раз отвернулся – пес с тобою
Перетопчусь и в одного
Беда всегда идет с бедою
Приметил я уже давно.
И ласки ждать уж нету смысла
Когда кострищ дым коромыслом
Что вешать можно уж топор
А тут кричат – Подай багор!
Какая блажь, ну в самом деле!
Какой багор, какой костер!
Дела мне Ваши надоели
Не мил пустых очей мне взор!
«Блажь». Автор: [email protected]
wvxvw 06.08.2014 17:06 # 0
wvxvw 06.08.2014 17:16 # 0
Я просто забил пытаться понять воспаленный моск нашего хтмл/питон разработчика в смысле навигации по проекту. Обычный текстовый поиск по файлам - единственное что спасает.
Vasiliy 06.08.2014 17:29 # 0
someone 06.08.2014 17:34 # 0
Fixed?
Qwertiy 06.08.2014 23:52 # 0
А ещё есть вероятность, что исходный код некоторыне поля ещё и вычищает :D
someone 07.08.2014 11:40 # 0
Мистер Хэнки 06.08.2014 18:05 # 0
Vasiliy 06.08.2014 18:11 # 0
TauSigma 06.08.2014 18:12 # 0
kegdan 06.08.2014 18:16 # 0
А вообще и в самой Идеи кажется можно
defecate-plusplus 06.08.2014 18:18 # 0
сгодится идея, конечно
TauSigma 06.08.2014 18:23 # 0
http://www.jetbrains.com/webide/
>сгодится идея, конечно
От инструмента - многое зависит.
Инструмент может быть такое говно, что и язык программирования станет противен.
bormand 06.08.2014 18:33 # +1
Notepad.exe?
kegdan 06.08.2014 18:35 # +1
не бейте...
TauSigma 06.08.2014 18:44 # 0
kegdan 06.08.2014 19:04 # 0
TauSigma 06.08.2014 20:08 # 0
Я недавно её водрузил вместо шеллов, там есть очень удобный вариант использования её по принципу кваковской консоли.
1024-- 06.08.2014 19:47 # 0
> не бейте...
Ну, ну...
Но notepad++ - это вещь.
defecate-plusplus 06.08.2014 18:45 # 0
про emacs было уже?
Lokich 07.08.2014 13:38 # 0
roman-kashitsyn 07.08.2014 13:42 # +1
bormand 07.08.2014 14:30 # 0
roman-kashitsyn 07.08.2014 14:33 # 0
А ещё vim не может в асинхронность, в отличие от emacs. Поэтому и начали пилить NeoVim.
wvxvw 07.08.2014 15:21 # 0
roman-kashitsyn 07.08.2014 16:12 # 0
Нормальные грамматики это хорошо. В TextAdept хайлайтинг реализован с помощью парсер-комбинаторов LPeg. Код парсеров очень простой, и их легко комбинировать, собирая парсеры CSS, HTML, JS, PHP в рамках одного файла.
С другой стороны, для C++ вроде нет CFG, поэтому нужны всё же и альтернативные механизмы. Чтобы можно было прикрутить лексер clang, например.
wvxvw 07.08.2014 19:27 # 0
https://github.com/brianjcj/auto-complete-clang
roman-kashitsyn 07.08.2014 19:48 # 0
Вот только банально подствечивать плюсовый код емакс толком не умеет. Выравнивание ломается регулярно, приходится релодить буфер. Потому и хочется втроить именно кланговый лексер, для нормальной подстветки кода.
Форматировать вполне можно и через clang-format, он раздражает гораздо меньше дефолтного емаксового форматтера.
wvxvw 07.08.2014 19:47 # +1
Можно пойти по пути МПС / Паредита и заставлять программистов всегда писать "правильно", но жить так не хочется. В итоге все редакторы, которые я видел, парсят как-то код вокруг курсора по-другому, и потом стараются это как-то подружить с глобальным парсером. С Ц++, судя по всему, еще хуже, т.как очень тяжело локально разобраться, что такое программист пишет.
Я так думаю, что для Ц++ будущее за стохастическими (PCFG) / машиннообучаемыми парсерами: сначала программист скармливает МЛ алгоритму, например, Буст (или наблюдает за погодой за окном), а потом этот алгоритм начинает угадывать какие слова где подставлять и как подсвечивать.
roman-kashitsyn 08.08.2014 08:58 # 0
kegdan 08.08.2014 10:03 # 0
bormand 08.08.2014 10:05 # +1
kegdan 08.08.2014 10:10 # 0
roman-kashitsyn 08.08.2014 10:16 # 0
Вероятно, ты имел в виду, что лексер почти равносилен парсеру. Да, лексер там сложнее, чем обычно, ему нужно помнить контекст, но всё же лексеру далеко до сложности парсера. У парсера на выходе AST, а у лексера - поток токенов.
Clang-format, к примеру, работает с лексером, а не парсером. Если интересно, чуть больше об этом здесь: С парсером не получится делать некоторых вещей, которые может делать лексер, особенно когда в дело вступают наши любимые макросы.
roman-kashitsyn 08.08.2014 10:09 # 0
Ваша любимая VS, например, иногда отказывается форматировать некомпилирующийся код, ЛОЛ.
Мне на самом деле достаточно видеть ключевые слова, комментарии и строки. В этих случаях лексера вполне достаточно. Всё остальное уже - баловство.
Для проверки компилируемости можно просто в фоне гонять компилятор с --syntax-only.
kegdan 08.08.2014 10:16 # 0
bormand 08.08.2014 15:07 # +1
Ну не скажи. Жизнь без понимающего контекст автодополнения совсем не сахар.
defecate-plusplus 08.08.2014 15:10 # +1
история развивается по спирали
roman-kashitsyn 08.08.2014 15:14 # 0
В какой-нибудь жавке - да. А в крестах я, честно говоря, и без него неплохо живу. В хачкеле тоже норм без автодополнения.
Время набора кода не идёт ни в какое сравнение со временем, затраченным на исследования, чтение кода и проектирование.
wvxvw 08.08.2014 15:51 # 0
Я много лет пользовался Клипсом, и какое-то время МСВС и ФлашДевелопом. Т.е. я себе очень хорошо представляю, что делает автодополнение. И тем не менее, никакого дискомфорта я не испытываю от отсутствия. Гораздо большие неприятности доставляет разработка в среде, где нет способа оперативно проверить правильность только что написаного кода (юнит тесты - это не оперативно). В не меньшей степени влияет, если среда разработки настроена нубом, и в ней либо полный беспорядок, либо не хватает критически важных вещей. Но тут эти недостатки идут рука об руку: я еще в жизни не встретил человека с Клипсом в состоянии в котором в нем было бы удобно работать. Большинство не знают и не умеют, и мучаются. Напротив, я встречал людей которые пользовались одновременно Клипс/ИДЕЯ + Саблайм, Клисп/ИДЕЯ + Н++, даже видел человека 20 лет проработавшего в МСВС, и тем не менее работавшего с текстовыми файлами в какой-то пародии на Нортон Коммандер.
wvxvw 08.08.2014 13:41 # 0
90% времени убито на написание ad hoc разновидности LL парсера, который парсит в токены, а потом легким движением руки создается грамматика, и парсер для нужного языка. Последнее происходит практически автоматически и с минимумом ошибок и переделок.
Я сейчас для того, чтобы лучше познакомится с тем, как работает Эмаксовский Семантик, пишу мини-мод для CL format мини-языка. Составить грамматику заняло один вечер, а с лексером до сих пор ебусь: уже третий раз переписываю.
bormand 08.08.2014 13:58 # +2
Распарси c++11 легким движением руки :)
wvxvw 08.08.2014 15:37 # 0
bormand 08.08.2014 15:43 # +2
Хуже только в perl'е. Тот вообще невозможно распарсить не исполняя.
bormand 08.08.2014 15:49 # +1
wvxvw 08.08.2014 15:57 # 0
bormand 08.08.2014 16:02 # +1
Или лексер будет передавать парсеру имена не как просто "имя", а как "имя функции", "имя переменной", "имя шаблона" и т.п., чтобы парсер уже мог работать на мало-мальски обобщенных правилах без ad-hoc? Что это? Переменная f, у которой в конструктор передано значение a или же прототип функции, принимающей тип a и возвращающей int?
wvxvw 08.08.2014 17:52 # 0
Лексеры в Семантике могут ориентироваться известные значения из таблицы синтаксиса, где есть еще, например, правила для того, что такое "экранирование", и "парный разделитель".
По поводу конкретного примера: я не знаю, я бы не брался писать ни лексер ни парсер для Ц++ по ряду причин, и не только изза сложности и недостаточного знакомства. Мне, если честно, просто противно на него смотреть :) Хуже только Обж-С выглядит, или какие-нибудь ХМЛ-подобные.
bormand 08.08.2014 17:56 # 0
Ну еще баши, батники и прочее CLI говно, когда дело заходит дальше копирования пары файлов. А ну и да, на вершине стоят скрипты звёздочки (см. ниже по треду) и конфиг сендмейла (вообще эзотерический язык).
wvxvw 08.08.2014 18:26 # 0
bormand 08.08.2014 18:37 # +1
Ну я не про парсинг, я про внешний вид.
А регулярки в баше вообще мудак писал - часть символов (например плюс и скобки) нужно экранировать, чтобы они обрели специальный смысл. А часть - наоборот (например звездочку).
kegdan 08.08.2014 18:47 # 0
roman-kashitsyn 08.08.2014 15:44 # +4
wvxvw 08.08.2014 16:00 # 0
roman-kashitsyn 08.08.2014 16:07 # 0
bormand 07.08.2014 14:47 # 0
wvxvw 07.08.2014 15:13 # 0
defecate-plusplus 06.08.2014 18:35 # +2
http://stackoverflow.com/a/13829907
bormand 06.08.2014 18:40 # 0
defecate-plusplus 06.08.2014 18:51 # +1
defecate-plusplus 06.08.2014 18:43 # 0
лицензии всё равно и на то, и на другое куплены
по мере взросления проекта он всё равно переезжает в идею, чтобы собираться, деплоиться с жабьими компонентами в один мышиный клик (хотя никто не заставляет это делать именно из идеи, просто для нее жавоёбы уже мавен настроили, зачем лишнюю работу делать)
особых претензий к идее от них я не слышу
TauSigma 06.08.2014 19:00 # 0
defecate-plusplus 06.08.2014 19:13 # 0
установи да посмотри
wvxvw 06.08.2014 19:17 # +2
Вобщем типичный тырпрайз, где можно ходить только прямо и только строем. Но как недавно заметили бретанские ученые, 99% устраивает ходить только прямо и только строем, так что не беспокойтесь, вам тоже понравится.