Архив за месяц: Август 2016

5 аспектов, чтобы купить оригинальные и недорогие светодиодные светильники в интернет магазине в Киеве на сайте priceok.com.ua

Процесс оформления любого типа помещения достаточно специфичен и предполагает использование профессионального подхода.

Если вы планируете реорганизацию дома или офиса, настоятельно рекомендуем обратиться к проверенному и надежному исполнительному лицу.

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

Рассмотрим целевую группу – освещение. На сегодняшний день мы можем выбрать любую из представленных систем освещения. Однако, настоятельно рекомендуем вам, перед тем, как принять окончательное решение, детально разобраться в основных аспектах.

Начнем с наиболее популярного и востребованного вида – светодиоды. Если вы хотите использовать качественные и надежные Led-технологии, наша компания всегда к вашим услугам.

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

Купить светодиодные светильники в интернет магазине в Киеве на сайте priceok.com.ua – это именно то, что вам нужно по ряду причин. Перечислим основные:

1.       Широкий ассортимент. Отметим регулярное обновление товаров. Все позиции представлены качественным фото и подробным описанием. Покупатель никогда не запутается, так как все продукты четко и корректно ранжированы в соответствии со своей целевой группой.

2.       Консультации, которые предоставляют наши специалисты, помогут вам детально разобраться в особенностях светодиодов и выбрать модель, наиболее точно подходящую под требования и предпочтения.

3.       Немаловажный аспект – целевое предназначение комнаты. Помните об этом в процессе оформления комнаты.

5.       Наличие как классических – стандартных – вариантов оформления помещения светом, так и инновационных. Мы гарантируем высокий уровень качества, стиль и доступные цены.

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

5.       Все большее количество людей предпочитает использовать светодиоды, так как они не только практичны и удобны, но и экологически безопасны.

6 причин купить качественную и стильную куклу в интернет магазине fashiontoys.com.ua

Что может порадовать ребенка больше, чем новая игрушка? Дети всегда готовы играть с новыми персонажами. Если вы хотите разнообразить досуг чада, сделать его веселым и познавательным, выбирайте правильные игрушки.

Если вы цените свое время, силы и финансовые средства, обратитесь к услугам интернет магазинов. Сегодня данное направление особенно актуально, так как приобретение товаров в сети позволяет сделать шопинг максимально эффективным и удобным.

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

Все модели, которые представлены в каталогах, выполнены из качественных, прочных и долговечных материалов, которые имеют экологически безопасный состав.

Спустя время наши замечательные куклы останутся все такими же красивыми и оригинальными. Они не изменят своего цвета, фактуры и многих других параметров.

Купить куклу в интернет магазине fashiontoys.com.ua – это возможность порадовать малыша и преподнести ему лучший подарок!

Безусловно, сегодня интернет «пестрит» различными предложениями от торговых площадок. Выбрать можно любой сайт. Однако, далеко не все предлагают выгодное сотрудничество и гарантии. Мы же делаем все возможное для блага покупателя!

Почему стоит выбрать нашу команду?

По нескольким очевидным причинам, которые мы перечислим ниже:

1.       На протяжении первых четырнадцати дней покупатель может вернуть купленный товар. Мы работаем для вашего блага, создавая максимально выгодные условия для сотрудничества.

2.       Выгодные цены, основанные на минимальных наценках. Мы гарантируем вам тот факт, что стоимость наших товаров является наилучшей в данном сегменте рынка.

3.       Вы можете оплатить товар несколькими способами, что говорит о простоте оформления покупки. Речь идет как о наличном, так и о безналичном расчете.

4.       Если вы находитесь в поиске подходящей куклы, ознакомьтесь с предложениями на странице «Хиты продаж». Там находятся экземпляры, которые наиболее востребованы у детей на сегодняшний день.

5.       Внимательное отношение к каждому покупателю. Мы понимаем, что порой достаточно трудно найти модель, которая выгодно дополнит коллекцию игрушек ребенка. Наши специалисты помогут вам сделать правильную и удачную покупку!

6.       Доставка осуществляется по всей Украине. Для жителей столицы возможна доставка нашим курьером.

Мнение о книге "Внимательный мозг"

Жизнь коротка чтобы читать такие потоки сознания. Ну или "не осилил". На 130 странице я понял, что не смогу дальше следовать за восторженной мыслью автора книги. Т.к. текст это не научный взгляд, а субъективное мнение автора и его знакомых как медитация это круто. Простите, но другой рецензии не будет.
Читать  ли эту книгу? Нет, уж лучше Силу воли, там про медитацию намного больше полезной информации.

Мнение о книге "Внимательный мозг"

Жизнь коротка чтобы читать такие потоки сознания. Ну или "не осилил". На 130 странице я понял, что не смогу дальше следовать за восторженной мыслью автора книги. Т.к. текст это не научный взгляд, а субъективное мнение автора и его знакомых как медитация это круто. Простите, но другой рецензии не будет.
Читать  ли эту книгу? Нет, уж лучше Силу воли, там про медитацию намного больше полезной информации.

Скрыть окно IntelliSense в Visual Studio

Нет, я знаю что кнопка Esc закрывает это окно. Но бывает пишешь код, выскакивает окошко IntelliSense и в нем надо что-то выбрать, но вот перед тем как это что-то выбрать, надо посмотреть что там по этим окошком с подсказками. Есть "старый" вариант нажать Esc, посмотреть что там нужно и нажать Ctrl+Space чтобы опять открыть окно с подсказками. Но сейчас в Visual Studio пришла горячая клавиша зажатый Ctrl. Да, не нажать отпустить, а именно зажать:
Окошко скрывается, а все что находиться под ним замечательно видно.

Скрыть окно IntelliSense в Visual Studio

Нет, я знаю что кнопка Esc закрывает это окно. Но бывает пишешь код, выскакивает окошко IntelliSense и в нем надо что-то выбрать, но вот перед тем как это что-то выбрать, надо посмотреть что там по этим окошком с подсказками. Есть "старый" вариант нажать Esc, посмотреть что там нужно и нажать Ctrl+Space чтобы опять открыть окно с подсказками. Но сейчас в Visual Studio пришла горячая клавиша зажатый Ctrl. Да, не нажать отпустить, а именно зажать:
Окошко скрывается, а все что находиться под ним замечательно видно.

Как выбрать игровой ноутбук?

Как выбрать игровой ноутбук?

Многие сторонники персональных компьютеров услышав фразу «геймерский ноутбук» или «игровой ноутбук», скажут, что портативные компьютеры не могут быть одновременно мощными, тем более по сравнению с персональными. И они будут правы или недостаточно знакомы с игровыми новинками, которые сократили до минимума разницу в производительности с настольными компьютерами. Современные ноутбуки поддерживают игры с разрешением 1080p и выше.

Конечно настольные компьютеры могут предложить больше возможностей апгрейда и могут быть дешевле по сравнению с ноутбуками, оснащенными таким же аппаратным обеспечением. Но здесь и свои преимущества — Вы занимаетесь любимыми делами в любом месте, не ограничивая мощность.

Купить игровой ноутбук, можно на сайте zadrotov.com.ua/notebook/notebook-for-gamers , а также читайте Отзывы zadrotov на сайте zadrotov.com.ua, а теперь перейдем к критериям отбора, и поможем Вам выбрать ноутбук для игр.

GPU: Ваш 3D графический процессор

Все современные игры основаны на 3D графике, поэтому основным компонентом при выборе должно быть мощный графический процессор или GPU. На сегодняшний день графические процессоры производят только 2 известных производителя: AMD и Nvidia.

На данный момент Nvidia GeForce GTX 980M — самый мощный мобильный GPU. Компания Nvidia утверждает, что данная видеокарта обеспечивает 75% мощности обычной версии, довольно феноменальный результат, если учитывать, что GeForce GTX 480M, который считался лучшим мобильным графическим процессором 2010 года, обеспечивал только 40% мощности своего десктопного двойника.

Лучшая видеокарта AMD — Radeon R9 M290X. Слухи говорят, что ожидается обновление, но пока это лучшее предложение AMD.

Однако для игровых ноутбуков мы бы советовали все же карты от Nvidia, так как они более прохладные и имеют более оптимизированы драйверы.

Несмотря на то что GTX 980M мощная мобильная карта, не обязательно искать ноутбук именно с таким решением. Мощность видеокарты должна зависеть от игр в которые вы планируете играть. Давайте более подробно пройдемся по модельному ряду мобильных видеокарт от компании Nvidia и определим, какие из них для чего подойдут.

Видеокарты топового сегмента. Сюда можно отнести все видеокарты начиная от Nvidia GeForce GTX 960M — 980M. Если, например, с 960 вы сможете играть в большинство игр на высоких настройках, то с GTX 970M и GTX 980M вы можете быть уверены, что все будет работать на ультра параметрах. Данные видеокарты позволят вам поиграть в такие игры, как: Ведьмак 3, Fallout 4, GTA 5, Overwatch и другие хиты.

Видеокарты среднего сегмента.    К таким видеокарт принадлежат GeForce 930M — GTX 950M. С GTX 950M вы может рассчитывать на игру на средних — минимальных настройках в игры 2015 — 2016. А вот например, с GT 740M, которая фактически закрывает этот сегмент выйдет поиграть уже в далеко не все хиты этих лет. Но она без проблем удовлетворит потребность тех людей которые играют в Dota 2, LoL, World o Tanks, Counter — Strike: GO, FIFA 16 и т.д.

Видеокарты ниже среднего сегмента. Среди популярных моделей этого сегмента вы может часто встречать GT 720 | 730 | 735 | 920. Ноутбуки на таких видеокартах назвать игровыми уже трудно, однако в такие игры, как Counter — Strike: GO, FIFA 16, Dota 2 вы сможете поиграть даже с приемлемым уровнем фпс. О более мощные игры можно забыть или играть в них с не реальными глюками.

Видеокарты нижнего сегмента. Такие видеокарты еще называют затычками. Почему? Потому что в игровой процессора обычно интегрированное видео мощнее. К таким видеокарт можно отнести NVIDIA GeForce 710M, 610M и тому подобные. Ноутбуки оснащены такими картами не предназначены для игр в принципе. На них можно посидеть в интернете или поработать в Word.

Если мы не написали о видео карту, которая интересует вас, то предлагаем вам таблицу , благодаря, которой вы сможете отнести к тому или иному сегменту.

CPU и RAM: Важно, но не первоочередная

Заголовок: семейство процессоров Intel® Core™ 6-го поколения

Если графический процессор является сердцем игрового ноутбука, то центральный процессор и оперативная память — это мозг. К мощной видеокарты нужно выбрать соответствующий процессор. Как выбрать процессоры? Во-первых игровой ноутбук должен обладать процессор типа и5 или и7.

 

Во-вторых идентификатор поколение должно быть как можно выше (на данный момент 6 высокий), идентификатором смотрите на картинке выше. Следующие 3 цифры обозначением конфигурации и чем они выше тем лучше. А теперь на счет буквочек в конце, какие они бывают и что означают:

  • H — означает, что процессор имеет интегрированную графику, которая будет использоваться в простых задачах.
  • HK — процессор имеет интегрированную графику + является возможность разгона (т.е. поднять стандартные частоты на которых работает процессор)
  • HQ — процессор имеет интегрированную графику и имеет 4 физических ядра
  • U — ультра низкое потребление энергии (в таких процессоров ниже частоты, но ноутбук работает дольше батареи)
  • M — в 6-м поколении такая маркировка не встречается, ранее означало, что процессор предназначен для ноутбуков (обычно они имели меньшее энергопотребление, более высокие максимальные рабочие температуры, но ниже частоты видности их аналогов для ПК).

Базовая частота процессора для игрового ноутбука желательно, чтобы было не менее 2.3 ГГц на 1 ядро. На счет ОЗУ то сегодня не писан стандарт для игр это 8 ГБ, хотите с запасом берите 16 ГБ.

Стоит прочитать:  Не знаете ноутбук какого производителя купить? Читайте здесь.

SSD или HDD?

 

Лучшая преимущество игрового ноутбука — скорость работы, и чем быстрее — тем лучше, поэтому стоит выбрать SSD накопители. Они обеспечивают высокую скорость считывания и записи файлов и как следствие ускорение загрузки игры, уменьшение зависаний. Если, SSD не входит в Ваш бюджет, настоятельно рекомендуем приобрести, как минимум 1Тб HDD со скоростью 7200 оборотов в минуту.

Однако, мы рекомендуем выбрать конфигурацию игрового ноутбука с SSD.

Дисплей: Какие преимущества?

 

Геймерский ноутбук должен быть оснащен дисплеем с разрешением минимум 1920х1080 — меньше, будет размывать детальность изображения. Подавляющее большинство оснащена ЖК — дисплеями, которые обычно обеспечивают более быстрое время отклика, но имеют малый угол обзора. IPS панели являются лучшими, точно передают оттенки и соответственно увеличивают цену ноутбука. Некоторые игровые ноутбуки поставляются с панелями, поддерживающими Nvidia’s G-Sync или AMD’s V-Sync, обе технологии предназначены для улучшения четкости изображения.

Система охлаждения

 

Не пугайтесь больших размеров игровых ноутбуков, производители оснащают их тепло выводными шасси для эффективного рассеивания тепла и сохранения тихой работы. Но, к сожалению Вы не сможете узнать насколько практически спроектированная система охлаждения пока не проверите устройство в боевых условиях более 10-ти минут. Поэтому, если у Вас есть возможность, прежде чем покупать «машину», сделайте для нее стресс-тест на максимальных настройках. Если ноутбук становится ненормально горячим, подумайте еще раз перед покупкой.

Динамический вызов функций неуправляемых DLL

В .NET-атрибутах можно указывать только константные выражения. Т.о. атрибуту DllImport нужно указывать имя библиотеки статически, дабы это имя было известно на этапе компиляции. Порой это порождает уродливые конструкции, разрастающиеся как снежный ком, по мере появления новых версий AutoCAD. Наглядный тому пример можно увидеть здесь в коде Александра Ривилиса: по мере появления AutoCAD 2018, 2019 и т.д. - этот код придётся каждый раз дописывать.


Как правило, имя нужной DLL достаточно просто выяснить во время выполнения кода. Например, в обозначенном выше коде Александра Ривилиса нужная функция хранится в файлах acdb17.dll, acdb18.dll, ac1st19.dll, ac1st20.dll, ac1st21.dll. Т.е. мы видим, что каждая библиотека в качестве суффикса использует значение Major версии приложения. Кроме того, мы видим, что начиная с версии 19 (AutoCAD 2013) функция была перенесена в др. библиотеку (т.е. изменился префикс в её имени). Зная обозначенные выше правила, можно динамически вычислить имя DLL файла, в котором находится интересующая нас функция.

Далее показываю небольшой пример того, как можно динамически вызывать функцию acedSetEnv в разных версиях AutoCAD, не создавая для неё статических обёрток. На всякий случай напоминаю, что до версии AutoCAD 2013 эта функция находилась в файле acad.exe, а начиная с AutoCAD 2013 была перенесена в accore.dll.

Код проверялся в AutoCAD 2009 и 2016.

-------------------------------------------------------------
/* Utils.cs */
using System;
using System.Text;
using System.Runtime.InteropServices;
using cad = Autodesk.AutoCAD.ApplicationServices.Application;

namespace Bushman.AutoCAD.Sandbox {

    [UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet
        = CharSet.Auto)]
    public delegate int acedSetEnvDelegate(string envName,
        StringBuilder NewValue);

    public static class Utils {

        [DllImport("kernel32.dll")]
        public static extern IntPtr LoadLibrary(string
            dllToLoad);

        [DllImport("kernel32.dll")]
        public static extern IntPtr GetProcAddress(IntPtr
            hModule, string procedureName);


        [DllImport("kernel32.dll")]
        public static extern bool FreeLibrary(IntPtr hModule);

        const int AutoCAD_2013_Major = 19;

        public static string GetDllName() {

            if (cad.Version.Major < AutoCAD_2013_Major)
                return "acad.exe";
            else
                return "accore.dll";
        }

        public static acedSetEnvDelegate acedSetEnv;

        static Utils() {
            acedSetEnv = GetAcedSetEnv();
        }

        static acedSetEnvDelegate GetAcedSetEnv() {

            string dllName = Utils.GetDllName();
            IntPtr pDll = Utils.LoadLibrary(dllName);

            if (pDll == IntPtr.Zero) {
                return null;
            }

            string funcName = "acedSetEnv";

            IntPtr pAddressOfFunctionToCall = Utils
                .GetProcAddress(pDll, funcName);

            if (pAddressOfFunctionToCall == IntPtr.Zero) {

                return null;
            }

            acedSetEnvDelegate acedSetEnv = (
                acedSetEnvDelegate) Marshal
                .GetDelegateForFunctionPointer(
                pAddressOfFunctionToCall,
                typeof(acedSetEnvDelegate));

            bool result = Utils.FreeLibrary(pDll);

            return acedSetEnv;
        }
    }
}

 ------------------------------------------------------------

Далее создадим тестовую команду, которая изменит значение переменной "ACAD":

------------------------------------------------------------
/* Commands.cs */
using System;
using System.Runtime.InteropServices;
using System.Text;
using cad = Autodesk.AutoCAD.ApplicationServices.Application;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Runtime;

namespace Bushman.AutoCAD.Sandbox {

    public sealed class Commands {

        [CommandMethod("Test", CommandFlags.Modal)]
        public void Test() {

            Document doc = cad.DocumentManager
                .MdiActiveDocument;

            if (doc == null)
                return;

            Editor ed = doc.Editor;

            acedSetEnvDelegate acedSetEnv = Utils.acedSetEnv;

            if (acedSetEnv == null) {
                ed.WriteMessage("acedSetEnv function was " +
                    "not found.");
                return;
            }

            /* For example, we'll edit the "Support File Search
             * Path" value: */
            string varName = "ACAD";
            StringBuilder sb = new StringBuilder(
                @"C:\abc\def");

            int theResult = acedSetEnv(varName, sb); // 5100
        }
    }
}

---------------------------------------------------------------

Динамическое связывание и изменение системой переменной ACAD успешно происходит в обоих тестируемых версиях AutoCAD: 2009 и 2016.



Динамический вызов функций неуправляемых DLL

В .NET-атрибутах можно указывать только константные выражения. Т.о. атрибуту DllImport нужно указывать имя библиотеки статически, дабы это имя было известно на этапе компиляции. Порой это порождает уродливые конструкции, разрастающиеся как снежный ком, по мере появления новых версий AutoCAD. Наглядный тому пример можно увидеть здесь в коде Александра Ривилиса: по мере появления AutoCAD 2018, 2019 и т.д. - этот код придётся каждый раз дописывать.


Как правило, имя нужной DLL достаточно просто выяснить во время выполнения кода. Например, в обозначенном выше коде Александра Ривилиса нужная функция хранится в файлах acdb17.dll, acdb18.dll, ac1st19.dll, ac1st20.dll, ac1st21.dll. Т.е. мы видим, что каждая библиотека в качестве суффикса использует значение Major версии приложения. Кроме того, мы видим, что начиная с версии 19 (AutoCAD 2013) функция была перенесена в др. библиотеку (т.е. изменился префикс в её имени). Зная обозначенные выше правила, можно динамически вычислить имя DLL файла, в котором находится интересующая нас функция.

Далее показываю небольшой пример того, как можно динамически вызывать функцию acedSetEnv в разных версиях AutoCAD, не создавая для неё статических обёрток. На всякий случай напоминаю, что до версии AutoCAD 2013 эта функция находилась в файле acad.exe, а начиная с AutoCAD 2013 была перенесена в accore.dll.

Код проверялся в AutoCAD 2009 и 2016.

-------------------------------------------------------------
/* Utils.cs */
using System;
using System.Text;
using System.Runtime.InteropServices;
using cad = Autodesk.AutoCAD.ApplicationServices.Application;

namespace Bushman.AutoCAD.Sandbox {

    [UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet
        = CharSet.Auto)]
    public delegate int acedSetEnvDelegate(string envName,
        StringBuilder NewValue);

    public static class Utils {

        [DllImport("kernel32.dll")]
        public static extern IntPtr LoadLibrary(string
            dllToLoad);

        [DllImport("kernel32.dll")]
        public static extern IntPtr GetProcAddress(IntPtr
            hModule, string procedureName);


        [DllImport("kernel32.dll")]
        public static extern bool FreeLibrary(IntPtr hModule);

        const int AutoCAD_2013_Major = 19;

        public static string GetDllName() {

            if (cad.Version.Major < AutoCAD_2013_Major)
                return "acad.exe";
            else
                return "accore.dll";
        }

        public static acedSetEnvDelegate acedSetEnv;

        static Utils() {
            acedSetEnv = GetAcedSetEnv();
        }

        static acedSetEnvDelegate GetAcedSetEnv() {

            string dllName = Utils.GetDllName();
            IntPtr pDll = Utils.LoadLibrary(dllName);

            if (pDll == IntPtr.Zero) {
                return null;
            }

            string funcName = "acedSetEnv";

            IntPtr pAddressOfFunctionToCall = Utils
                .GetProcAddress(pDll, funcName);

            if (pAddressOfFunctionToCall == IntPtr.Zero) {

                return null;
            }

            acedSetEnvDelegate acedSetEnv = (
                acedSetEnvDelegate) Marshal
                .GetDelegateForFunctionPointer(
                pAddressOfFunctionToCall,
                typeof(acedSetEnvDelegate));

            bool result = Utils.FreeLibrary(pDll);

            return acedSetEnv;
        }
    }
}

 ------------------------------------------------------------

Далее создадим тестовую команду, которая изменит значение переменной "ACAD":

------------------------------------------------------------
/* Commands.cs */
using System;
using System.Runtime.InteropServices;
using System.Text;
using cad = Autodesk.AutoCAD.ApplicationServices.Application;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Runtime;

namespace Bushman.AutoCAD.Sandbox {

    public sealed class Commands {

        [CommandMethod("Test", CommandFlags.Modal)]
        public void Test() {

            Document doc = cad.DocumentManager
                .MdiActiveDocument;

            if (doc == null)
                return;

            Editor ed = doc.Editor;

            acedSetEnvDelegate acedSetEnv = Utils.acedSetEnv;

            if (acedSetEnv == null) {
                ed.WriteMessage("acedSetEnv function was " +
                    "not found.");
                return;
            }

            /* For example, we'll edit the "Support File Search
             * Path" value: */
            string varName = "ACAD";
            StringBuilder sb = new StringBuilder(
                @"C:\abc\def");

            int theResult = acedSetEnv(varName, sb); // 5100
        }
    }
}

---------------------------------------------------------------

Динамическое связывание и изменение системой переменной ACAD успешно происходит в обоих тестируемых версиях AutoCAD: 2009 и 2016.



Кто все эти люди?

На форумах MSDN задали вопрос "Поясните, пожалуйста, с примерами, чем junior и middle отличаются от senior?". Ответ на этот вопрос будет или субъективным, или очень формальным. Многие организации идут по второму пути. Вводят что мидла должен соответствовать критериям А, Б; миддл критериям В, Г; а синьор должен еще и Д и Е. За такими формальными штуками в эти организации. Под катом мое субъективное мнение никого ни к чему не обязывающее.



Junior - разработчик с небольшим опытом на применяемой платформе. С хорошим качеством может решать похожие задачи. Задачи с которыми раньше не сталкивался вызывают существенный перерасход по времени и выполняются с низким качеством (здесь могут быть как откровенные баги, так и архитектурные ошибки). Практически никогда не думает об альтернативных возможностях работы кода.
Middle - разработчик с опытом реальной разработки на платформе от года и выше. С хорошим качеством и в приемлемые сроки решает как повторяющиеся так и новые задачи. Архитектурные вещи, как правило, косячит. При написании кода предусматривает альтернативные сценарии (контроль входных данных, обработка ошибок).
Senoir - разработчик с очень хорошим знанием платформы. Может не только решать задачи, но и видит когда их можно не решать, может предложить альтернативные способы реализации лучше удовлетворяющие функциональным или нефункциональным требованиям. Полностью с приемлемым качеством может разрабатывать архитектуру средних и крупных программных систем. В зависимости от того к чему лежит душа в дальнейшем или все больше занимается архитектурными вещами и переходит в архитекторы, или больше занимается проработкой требований, обучением коллег и переходит в тимлиды.