У всех на виду: нюансы Open Source разработкиCUSTIS
Открытый семинар для студентов в компании CUSTIS (20 марта 2014 года).
Лектор: Виталий Филиппов, ведущий веб-разработчик.
Аннотация: Главное в свободном ПО — это всеобщее сотрудничество. Но правильно его организовать может быть нелегко: и люди, и компании часто не понимают смысл открытости и те преимущества, которые она дает. Это приводит к проблемам взаимодействия — между проектом и пользователями, внутри проекта, между разными проектами... Как с ними справиться? Что нужно для успешности «открытого» проекта? Как организовать разработку с технической точки зрения? Какую лицензию выбрать? И как вообще устроен мир разработки свободного ПО, какие есть интересные Open Source проекты и зачем их создавать? Обо всем этом и пойдет речь на семинаре.
Видеозапись семинара: https://vimeo.com/90127303.
А существуют ли в реальности 64-битные ошибки?Tatyanazaxarova
Я часто слышу в различных интерпретациях фразу "Приведенные примеры показывают не код, неправильный в плане переносимости на х64 системы, а код, неправильный сам по себе". Захотелось немного пообсуждать и пофилософствовать в блоге на эту тему. Просьба отнестись к этой записи с долей юмора.
Вступительная лекция по Java. История появления, идеи, сферы применения, место среди других языков, экосистема. Структурированная информация о Java, как о языке программирования.
Под эту лекцию имеется более развёрнутый материал. Кому интересно - пишите.
Конструктивная критика приветствуется.
64 бита для Си++ программистов: от /Wp64 к Viva64Tatyanazaxarova
Развитие рынка 64-битных решений поставило новые задачи в области их верификации и тестирования. В статье говорится об одном из таких инструментов - Viva64. Это lint-подобный статический анализатор Си/Си++ кода, предназначенный специально для выявления ошибок, связанных с особенностями 64-битных платформ. Освещены предпосылки для создания данного анализатора и отражена его связь с режимом "Detect 64-Bit Portability Issues" в Си++ компиляторе Visual Studio 2005.
У всех на виду: нюансы Open Source разработкиCUSTIS
Открытый семинар для студентов в компании CUSTIS (20 марта 2014 года).
Лектор: Виталий Филиппов, ведущий веб-разработчик.
Аннотация: Главное в свободном ПО — это всеобщее сотрудничество. Но правильно его организовать может быть нелегко: и люди, и компании часто не понимают смысл открытости и те преимущества, которые она дает. Это приводит к проблемам взаимодействия — между проектом и пользователями, внутри проекта, между разными проектами... Как с ними справиться? Что нужно для успешности «открытого» проекта? Как организовать разработку с технической точки зрения? Какую лицензию выбрать? И как вообще устроен мир разработки свободного ПО, какие есть интересные Open Source проекты и зачем их создавать? Обо всем этом и пойдет речь на семинаре.
Видеозапись семинара: https://vimeo.com/90127303.
А существуют ли в реальности 64-битные ошибки?Tatyanazaxarova
Я часто слышу в различных интерпретациях фразу "Приведенные примеры показывают не код, неправильный в плане переносимости на х64 системы, а код, неправильный сам по себе". Захотелось немного пообсуждать и пофилософствовать в блоге на эту тему. Просьба отнестись к этой записи с долей юмора.
Вступительная лекция по Java. История появления, идеи, сферы применения, место среди других языков, экосистема. Структурированная информация о Java, как о языке программирования.
Под эту лекцию имеется более развёрнутый материал. Кому интересно - пишите.
Конструктивная критика приветствуется.
64 бита для Си++ программистов: от /Wp64 к Viva64Tatyanazaxarova
Развитие рынка 64-битных решений поставило новые задачи в области их верификации и тестирования. В статье говорится об одном из таких инструментов - Viva64. Это lint-подобный статический анализатор Си/Си++ кода, предназначенный специально для выявления ошибок, связанных с особенностями 64-битных платформ. Освещены предпосылки для создания данного анализатора и отражена его связь с режимом "Detect 64-Bit Portability Issues" в Си++ компиляторе Visual Studio 2005.
Почему стоит использовать TypeScript в Angular2, какие есть фишки и особенности. Полезем под капот синтаксиса декораторов, разберем Reflect metadata API, и многое другое
Спросите любого программиста и он честно вам ответит, что 90% процентов его времени уходит на поиск ошибок. Подпишусь под этим и я, сменивший за долгие годы множество языков и фреймворков. Действительно, "человеку свойственно ошибаться". Так что же делать, если из человека это свойство не выбить? Как сократить это бездарно потраченное время?
Тот же программист вам и ответ: "отлаживать, конечно". Это искуство сродни магии, доступно всем и покоряется немногим. Но к счастью, помимо проверенной временем практики "вставь сюда print" к услугам питонистов целый зоопарк инструментов.
В этом докладе я постараюсь обобщить самые частые практики отладки, описать их плюсы/минусы и как они соотносятся с Python. Кроме этого, мы совершим обзорный экскурс по экосистеме и посмотрим, чем можно помочь себе в этой нелегкой борьбе. Для особенных эстетов мы рассмотрим техники получения информации из уже запущенного кода. Buckle up!
======
Ссылки
======
Python Debugger Uncovered
https://www.youtube.com/watch?v=2sEPipctTxw
How I built a power debugger out of the standard library and
things I found on the internet
https://www.youtube.com/watch?v=g8kF9tuYZ6s
Architecture of Open Source Applications: GDB
http://www.aosabook.org/en/gdb.html
Advanced Python Debugging Techniques Using GDB
https://www.youtube.com/watch?v=rB9rPdMRxIA
pdb – Interactive Debugger
https://pymotw.com/2/pdb/
bdb — Debugger framework
https://docs.python.org/2/library/bdb.html
Статья рассказывает о новом направлении в развитии статических анализаторов кода - верификации параллельных программ. В статье рассказывается о нескольких статических анализаторах, которые могут претендовать на звание "Parallel Lint".
Презентация делалась для JuJa конференции - Java конференции для (пре) Juniors: https://juja.com.ua/materials/jujacon-2017/
В ней
- описываются основные темы-вопросы, которые часто спрашивают на собеседовании на позицию Junior Java Developer;
- советы, что спросить собеседующего;
- как себя позиционировать, как относиться к собеседованию, как не бояться и как понять, что вам "туда".
http://techtalks.nsu.ru
Видеозапись: http://www.youtube.com/watch?v=9sWD3RBwz30
23 сентября 2014. Проходим тест Джоэла (Семён Факторович и Олег Годовых, Noveo)
«Вот уже 14 лет как Джоэл Спольски придумал свой Joel test, но до сих пор далеко не все компании успешно проходят его. Мы поговорим о самых важных частях этого теста: о сервисах и инфраструктурных инструментах разработки (к ним относятся системы контроля версий, багтрекеры, continuous integration...) Принципы, о которых мы расскажем, одинаково применимы и для крупных компаний, и для стильных молодежных стартапов, и для студенческих курсовых проектов.»
Лекция прочитана в рамках проекта Tech Talks @NSU – серии открытых лекций о разработке ПО и карьере в IT, проводимых в Новосибирском государственном университете.
Подробности: http://techtalks.nsu.ru
Este estudio examina la variación genética en rasgos fenológicos como el inicio de la floración entre poblaciones de Silene ciliata que crecen en condiciones óptimas y subóptimas. Los resultados muestran que las poblaciones en condiciones óptimas florecen antes que las poblaciones en condiciones subóptimas en un jardín común, lo que sugiere una posible selección divergente de caracteres fenológicos según las presiones ambientales. Sin embargo, se necesitan más estudios para determinar si esta diferenciación se debe
1) The document discusses how to learn English happily by providing effective teaching methods for teachers and learning strategies for students.
2) It recommends that teachers correct misperceptions about learning English, organize engaging activities to motivate students, and use technology like PowerPoint to make classes more interactive.
3) For students, it suggests developing confidence, forming good study habits, and using the internet to access audio/video materials to improve English skills happily.
This document contains information about the candidate's work experience, technical skills, certifications, education, and personal details. It summarizes the candidate's experience in several areas including network design, configuration and troubleshooting of routing protocols, firewalls, switches, and wireless networks. The candidate has worked on projects involving SDH, CCTV, Cisco routers, firewalls, switches, fiber optics, LAN implementation, and automation and instrumentation.
This study assessed local adaptation and inbreeding depression in marginal populations of Silene ciliata, a Mediterranean alpine plant, to determine their conservation worth in a changing climate. Experimental gene flow between central and marginal populations showed some evidence of central populations providing genetic diversity to reduce inbreeding depression in marginals. However, there was little evidence of adaptive gene flow between marginal populations. Results varied between populations, likely due to differences in genetic diversity, inbreeding, and environmental conditions. The study suggests marginal populations experience high inbreeding depression but no clear maladaptation from central gene flow, though local adaptation exists between populations.
Parker Kittiwake Total Ferrous Debris Sensor BrochureParker Kittiwake
The Kittiwake Total Ferrous Debris Sensor measures ferrous density in lubricants in real-time, providing a parts per million value to monitor for changes indicating potential machine problems. It integrates easily into condition monitoring programs and helps with maintenance planning. The sensor detects metallic wear debris in lubrication systems and can be mounted in almost any system to monitor for changes in wear patterns.
This resume is for Alexus JSemrau, an accounting student at UW-Whitewater seeking an internship for summer 2017. She has a 3.64 GPA and expects to graduate with a Master's in Professional Accountancy in December 2019 and a Bachelor's in Business Administration in May 2018, both from UW-Whitewater. Her previous work experience includes accounting and assembly line internships at School Pak and as a service team member at Taco Bell, where she demonstrated skills in accounting software, customer service, and teamwork. She is also involved as a nursing home visitor, intramural sports, and the honors program.
Masters of Marketing: Website FoundationsDarmini Kara
This document provides an overview of the key elements needed to set up a website, including account settings, forms, locations, employee directory, links, FAQs, SEO settings, and content. It discusses establishing the framework basics, using default forms and templates, adding office locations and employee profiles, linking to carrier pages, creating an FAQ section, optimizing pages for search engines, and providing custom site content to tell customers about your business. The goal is to answer questions about getting started and the most important foundational elements of a website.
Este documento contiene instrucciones para un taller sobre blogs, incluyendo preguntas sobre los diferentes tipos de blogs, el propósito de los blogs, qué son los gadgets y cómo insertarlos, y los pasos para insertar videos, sonidos, imágenes, botones y texto en un blog. También solicita pegar la dirección web del propio blog.
This document contains an activity on film vocabulary. It includes matching descriptions of different film genres to vocabulary words and their definitions. It also includes questions to test understanding of film terminology like soundtrack, multiplex, trailer, rushes, and more. The activity provides compound adjective exercises to describe films and film reviews. It concludes with an interview activity where students discuss a film they have seen.
This document provides an introduction and overview of English literature. It discusses the geographical background of places like Great Britain, Ireland, and the British Isles. It then outlines the major historical periods of English literature, including the Anglo-Saxon period, Medieval period, Renaissance period, 17th century Puritan period, 18th century Classical period, Romantic period, Victorian period, and 20th century Modern period. For each period, it highlights some significant literary works and genres. Famous authors like Geoffrey Chaucer, William Shakespeare, and Charles Dickens are also mentioned. The document serves as a high-level introduction to the history and development of English literature over time.
Почему стоит использовать TypeScript в Angular2, какие есть фишки и особенности. Полезем под капот синтаксиса декораторов, разберем Reflect metadata API, и многое другое
Спросите любого программиста и он честно вам ответит, что 90% процентов его времени уходит на поиск ошибок. Подпишусь под этим и я, сменивший за долгие годы множество языков и фреймворков. Действительно, "человеку свойственно ошибаться". Так что же делать, если из человека это свойство не выбить? Как сократить это бездарно потраченное время?
Тот же программист вам и ответ: "отлаживать, конечно". Это искуство сродни магии, доступно всем и покоряется немногим. Но к счастью, помимо проверенной временем практики "вставь сюда print" к услугам питонистов целый зоопарк инструментов.
В этом докладе я постараюсь обобщить самые частые практики отладки, описать их плюсы/минусы и как они соотносятся с Python. Кроме этого, мы совершим обзорный экскурс по экосистеме и посмотрим, чем можно помочь себе в этой нелегкой борьбе. Для особенных эстетов мы рассмотрим техники получения информации из уже запущенного кода. Buckle up!
======
Ссылки
======
Python Debugger Uncovered
https://www.youtube.com/watch?v=2sEPipctTxw
How I built a power debugger out of the standard library and
things I found on the internet
https://www.youtube.com/watch?v=g8kF9tuYZ6s
Architecture of Open Source Applications: GDB
http://www.aosabook.org/en/gdb.html
Advanced Python Debugging Techniques Using GDB
https://www.youtube.com/watch?v=rB9rPdMRxIA
pdb – Interactive Debugger
https://pymotw.com/2/pdb/
bdb — Debugger framework
https://docs.python.org/2/library/bdb.html
Статья рассказывает о новом направлении в развитии статических анализаторов кода - верификации параллельных программ. В статье рассказывается о нескольких статических анализаторах, которые могут претендовать на звание "Parallel Lint".
Презентация делалась для JuJa конференции - Java конференции для (пре) Juniors: https://juja.com.ua/materials/jujacon-2017/
В ней
- описываются основные темы-вопросы, которые часто спрашивают на собеседовании на позицию Junior Java Developer;
- советы, что спросить собеседующего;
- как себя позиционировать, как относиться к собеседованию, как не бояться и как понять, что вам "туда".
http://techtalks.nsu.ru
Видеозапись: http://www.youtube.com/watch?v=9sWD3RBwz30
23 сентября 2014. Проходим тест Джоэла (Семён Факторович и Олег Годовых, Noveo)
«Вот уже 14 лет как Джоэл Спольски придумал свой Joel test, но до сих пор далеко не все компании успешно проходят его. Мы поговорим о самых важных частях этого теста: о сервисах и инфраструктурных инструментах разработки (к ним относятся системы контроля версий, багтрекеры, continuous integration...) Принципы, о которых мы расскажем, одинаково применимы и для крупных компаний, и для стильных молодежных стартапов, и для студенческих курсовых проектов.»
Лекция прочитана в рамках проекта Tech Talks @NSU – серии открытых лекций о разработке ПО и карьере в IT, проводимых в Новосибирском государственном университете.
Подробности: http://techtalks.nsu.ru
Este estudio examina la variación genética en rasgos fenológicos como el inicio de la floración entre poblaciones de Silene ciliata que crecen en condiciones óptimas y subóptimas. Los resultados muestran que las poblaciones en condiciones óptimas florecen antes que las poblaciones en condiciones subóptimas en un jardín común, lo que sugiere una posible selección divergente de caracteres fenológicos según las presiones ambientales. Sin embargo, se necesitan más estudios para determinar si esta diferenciación se debe
1) The document discusses how to learn English happily by providing effective teaching methods for teachers and learning strategies for students.
2) It recommends that teachers correct misperceptions about learning English, organize engaging activities to motivate students, and use technology like PowerPoint to make classes more interactive.
3) For students, it suggests developing confidence, forming good study habits, and using the internet to access audio/video materials to improve English skills happily.
This document contains information about the candidate's work experience, technical skills, certifications, education, and personal details. It summarizes the candidate's experience in several areas including network design, configuration and troubleshooting of routing protocols, firewalls, switches, and wireless networks. The candidate has worked on projects involving SDH, CCTV, Cisco routers, firewalls, switches, fiber optics, LAN implementation, and automation and instrumentation.
This study assessed local adaptation and inbreeding depression in marginal populations of Silene ciliata, a Mediterranean alpine plant, to determine their conservation worth in a changing climate. Experimental gene flow between central and marginal populations showed some evidence of central populations providing genetic diversity to reduce inbreeding depression in marginals. However, there was little evidence of adaptive gene flow between marginal populations. Results varied between populations, likely due to differences in genetic diversity, inbreeding, and environmental conditions. The study suggests marginal populations experience high inbreeding depression but no clear maladaptation from central gene flow, though local adaptation exists between populations.
Parker Kittiwake Total Ferrous Debris Sensor BrochureParker Kittiwake
The Kittiwake Total Ferrous Debris Sensor measures ferrous density in lubricants in real-time, providing a parts per million value to monitor for changes indicating potential machine problems. It integrates easily into condition monitoring programs and helps with maintenance planning. The sensor detects metallic wear debris in lubrication systems and can be mounted in almost any system to monitor for changes in wear patterns.
This resume is for Alexus JSemrau, an accounting student at UW-Whitewater seeking an internship for summer 2017. She has a 3.64 GPA and expects to graduate with a Master's in Professional Accountancy in December 2019 and a Bachelor's in Business Administration in May 2018, both from UW-Whitewater. Her previous work experience includes accounting and assembly line internships at School Pak and as a service team member at Taco Bell, where she demonstrated skills in accounting software, customer service, and teamwork. She is also involved as a nursing home visitor, intramural sports, and the honors program.
Masters of Marketing: Website FoundationsDarmini Kara
This document provides an overview of the key elements needed to set up a website, including account settings, forms, locations, employee directory, links, FAQs, SEO settings, and content. It discusses establishing the framework basics, using default forms and templates, adding office locations and employee profiles, linking to carrier pages, creating an FAQ section, optimizing pages for search engines, and providing custom site content to tell customers about your business. The goal is to answer questions about getting started and the most important foundational elements of a website.
Este documento contiene instrucciones para un taller sobre blogs, incluyendo preguntas sobre los diferentes tipos de blogs, el propósito de los blogs, qué son los gadgets y cómo insertarlos, y los pasos para insertar videos, sonidos, imágenes, botones y texto en un blog. También solicita pegar la dirección web del propio blog.
This document contains an activity on film vocabulary. It includes matching descriptions of different film genres to vocabulary words and their definitions. It also includes questions to test understanding of film terminology like soundtrack, multiplex, trailer, rushes, and more. The activity provides compound adjective exercises to describe films and film reviews. It concludes with an interview activity where students discuss a film they have seen.
This document provides an introduction and overview of English literature. It discusses the geographical background of places like Great Britain, Ireland, and the British Isles. It then outlines the major historical periods of English literature, including the Anglo-Saxon period, Medieval period, Renaissance period, 17th century Puritan period, 18th century Classical period, Romantic period, Victorian period, and 20th century Modern period. For each period, it highlights some significant literary works and genres. Famous authors like Geoffrey Chaucer, William Shakespeare, and Charles Dickens are also mentioned. The document serves as a high-level introduction to the history and development of English literature over time.
The document is a resume for Brittany Downs. It summarizes her professional experience working in customer service roles for QVC, G&W Awards, and 7-Eleven with responsibilities including assisting customers, data entry, order processing, and stocking merchandise. It also lists her education including ongoing study for a Bachelor's degree in Business Administration and certification in cosmetology. Relevant skills listed are Microsoft Office, Qcard, PayPal, typing, organization, time management, and customer service.
This document discusses Actinomycetes and Nocardia. It describes Actinomycetes as transitional forms between bacteria and fungi that resemble both in certain characteristics. Three medically important genera are mentioned: Actinomyces, Nocardia, and Streptomyces. Actinomycosis is described as a chronic granulomatous infection caused by Actinomyces that presents with indurated swellings and discharge of sulfur granules. Nocardia is described as aerobic, acid-fast, and a cause of cutaneous and systemic infections in immunocompromised individuals. Streptomyces can cause actinomycotic mycetoma, a subcutaneous infection that can penetrate deeper tissues
Actinomycetes are filamentous, gram-positive bacteria that have characteristics of both bacteria and fungi. They form a mycelium like fungi but have bacterial cell walls lacking chitin and cellulose. Common genera found in soil include Streptomyces, Nocardia, and Micromonospora. Streptomyces and Nocardia are important because they produce many antibiotics and can cause infections in humans. Nocardia forms branching filaments and causes pneumonia and brain infections, especially in immunocompromised individuals.
"Alliances with Lifestyle Medicine for Wellness as a Service (WaaS)" - Ingrid...Hyper Wellbeing
"Alliances with Lifestyle Medicine for Wellness as a Service (WaaS)" - Ingrid Edshteyn (Associate Exec Director/Founder, ACLM/Valia Lifestyle)
Delivered at the inaugural Hyper Wellbeing Summit, 14th November 2016, Mountain View, California.
For more information including details of subsequent events, please visit http://hyperwellbeing.com
The summit was created to foster a community around an emerging industry - Wellness as a Service (WaaS). Consumer technologies, in particular wearables and mobile, are powering a consumer revolution. A revolution to turn health and wellness into platform delivered services. A revolution enabling consumer data-driven disease risk reduction. A revolution extending health care past sick care towards consumer-led lifelong health, wellness and lifestyle optimization.
WaaS newsletter sign-up http://eepurl.com/b71fdr
@hyperwellbeing
От пояса с инструментами к полноценной лабораторииYandex
От пояса с инструментами к полноценной лаборатории
Постпроцессоры, SVG, автоматизация разработки и тестирования, эксперименты в браузере, живое документирование и многое другое.
Роман Комаров, Яндекс
Разработчик интерфейсов. В Яндексе с 2009 года, отвечает за вёрстку Яндекс.Почты. Экспериментирует над вёрсткой, интересуется фронтендом, ищет способы писать код быстро и качественно. Является мейнтейнером CSS-препроцессора Stylus.
Что такое REPL, как он устроен и какие крутые возможности в нём заложены. Поговорим о выполнении кода в REPL и о том как работает автокомплит в динамических языках. Ответим на вопрос что такое vm.runInContext, перехватим парочку промисов, сделаем вывод результатов действительно приятным и даже узнаем как подгрузить нужные модули и не подать виду. В заключение рассмотрим потрясающие возможности, которые даёт нам инфраструктура npm и как это всё можно использовать в работе.
Доклад ориентирован на тех, кому небезынтересен мир Node.js, но будет доступен также и более широкому кругу JS-разработчиков. Надеюсь, для кого-нибудь этот доклад станет очередной ступенькой в изучении любимого языка.
В данной статье рассмотрена программа VivaVisualCode, демонстрирующая использование библиотеки VivaCore. Программа VivaVisualCode графически отображает дерево разбора для вводимого исходного кода на языке Си++.
Не хватает, скажем, человеку рук - он создает себе дубля, безмозглого, безответственного, только и умеющего что паять контакты, или таскать тяжести, или писать под диктовку, но зато уж умеющего это делать хорошо.
Аркадий и Борис Стругацкие
Статья представляет собой введение в параллельные программы для начинающих. Статья была опубликована в журнале "Мир ПК" (http://www.viva64.com/go.php?url=429).
Similar to Viacheslav Eremin about DOT NET (rus lang) (20)
Viacheslav Eremin is a software developer and administrator with over 30 years of experience programming in languages like VB.NET, ASP.NET, SQL, JavaScript, and more. He has extensive experience building web and desktop applications, as well as administering servers, networks and systems. Some of his past roles include senior developer of a large Russian internet resource, project manager and developer of an ASP.NET MVC site and Windows application in Canada, and project manager and developer of an OTT television project in Bulgaria. He is currently available for work.
Viacheslav Eremin has over 30 years of experience as a programmer and system administrator. He has extensive experience building both web and desktop applications using technologies like ASP.NET, VB.NET, C#, SQL, and Linux administration. Some of the major projects he has worked on include developing the infrastructure for a large Russian news website, building e-commerce platforms, and creating kiosk payment systems. He is currently looking for a new full-time position and is willing to relocate within Bulgaria or abroad.
Viacheslav Eremin interview about DOT NET (eng lang)Viacheslav Eremin
This document contains an interview transcript with questions about the interviewee's development experience and practices. Some key points:
- The interviewee has worked as a freelance developer for many years, completing around 20 projects of varying sizes for different clients.
- Favorite development tools include Visual Studio 2010/2015 and SQL Server Management Studio. Source control experience includes SVN, TFS and Git.
- The interviewee emphasizes dividing code into logical layers and modules to improve maintainability. Databases should also be normalized.
- To improve loading speed, the interviewee recommends precompiling ASP.NET sites to static HTML or removing unnecessary frontend frameworks/libraries.
- The document discusses the respondent's career as a programmer over 30 years, including various projects they have worked on both as a freelancer and leading teams.
- Some of their biggest projects include websites like desen.bg and votpusk.ru, though they note most internet projects are unprofitable for owners.
- They now prefer to work as a freelancer or for employers/investors rather than starting their own projects due to the financial risks involved.
Viacheslav Eremin is a software developer and administrator with over 30 years of experience programming in languages like VB.NET, ASP.NET, SQL, JavaScript, and more. He has extensive experience building web and desktop applications, as well as administering servers, networks and systems. Some of his past roles include senior developer of a large Russian internet resource, project manager and developer of an ASP.NET MVC site and Windows application in Canada, and project manager and developer of an OTT television project in Bulgaria. He is currently available for work.
1. Номер Вопрос Ответ Viacheslav Eremin
1. Опишите способы
работы с WinForms в
многопоточных
.приложениях
Главная проблема в Win-приложениях в том, что другие потоки разрушают форму. Для этого придуман процесс под названием маршализация, когда
данные из других потоков отображаются на форме. Приниципиально в простой Win-форме без дополнительных библиотек есть основной и фоновый
поток. Основной поток неуправляемый, это поток обработки символов с клавиатуры и отображения формы на экране. БекграудВоркер - в нем обычно
делаются все долгоиграющие операции. Хотя теоретически можно создать больше потоков, чем один фоновый БекграундВоркер, но чем больше
параллелизм, тем больше накладные расходы. Поэтому параллелизм имеет смысл только при обращении к каким-то очень долгоиграющим внешним
ресурсам, например к диску или к сети. В расчетных задачах никакого параллелизма невозможно, хотя теоретически в НЕТ 4 есть как-бы какие-то
расчетные параллельные потоки, но я считаю это глюком разработчиков.
Существует несколько шаблонов кода многопоточных приложений в WinForms. Первый шаблон кода называется Asynchronus programing model. Это
хороший базовый шаблон - каждое действие имеет префикс BEGIN и END. Плюс делегат IasyncResult Однако чутьпозже, примерно с NET 3.5,
Микрософт стал утверждать, что этот шаблон устарел и предложил новый шаблон кода Event Based Async Patten. Еще позже микрософт стал
утвержать что оба эти шаблона кода несовершенны и начиная с NET 4 начал предлагать третий шаблон кода Event Based Programing, основанный на
команде AWAIT и квалификаторе ASYNC. Но существует формальное преобразование каждого из трех основных шаблонов кода в другой, иными
словами в каком бы шаблоне не была написана прога APM-AEP-TAP, ее можно преобразовать из любой одной методики работы с асинхронизмом в
другую.
Можно работать вообще без всяких шаблонов и методик APM-AEP-TAP, просто создавая задачи TASK и манипулируя ими, ожидая их завершения (или
вообще не ожидая, как это делается в WEB-приожениях), блокируя процессы командой SynkLock - лично я чаще всего использую именно эту
методику параллелизма, хотя мне было бы интересно побольше набить руку на использовании EAP-шаблонов кода. Пока, к сожалению мне мало
попадается проектов, где это возможно применить.
Помимо указанных трех основных шаблонов кода и бекграундворкера существует 100500 других стороних библиотек, так и сам микрософт дополняет
общие принципы своими библиотеками.
Наиболее известная библотека от Микрософта называется Parallel Linq. У нее есть свой шаблон кода работы с этой библиотекой, они называют его
декоратор (хотя я так и не понял, где они там видят декоратор), общий смысл этой библиотеки довольно удачный и простой - производится подписка
на события и обращаешься асинхронно к ресурсам, который поддерживают LINQ, а потом у подписчика возникают события, на которые он
подписался.
Кроме этих подходов и шаблонов кода, предалагаемых самим микрософтом, существует еще 100500 различных прочих шаблонов кода и библиотек,
предлагаемых другими командами и отдельными программистами, ну для примера, я когда-пользовался библотекой параллелизма EasyAsync.
Кроме этих библиотек и шаблонов кода, которые выросли из Виндоуса сущесствует еще 100500 библотек, которые имеют происхождение из Юникса и
Линукса, все они портированы на микрософтовский фреймоворк, я например сталкивался с проектом на nPth. Каждая такая библиотека имеет свой
шаблон кода использования, свои правила, свою документацию, совершенно не похожую на основные микрософтовские шаблоны кода APM-AEP-TAP,
BackgroundWorker, PLINQ.
2. Запишите код для
вывода на консоль
всех элементов
массива А с длиной
2-больше х символов
2-мя вариантами,
используя -лямбда
выражения и LINQ.
string[] A = {
"1", "22", "333",
"4444", “555”,
“66”, “7” };
class Program
{
static void Main(string[] args)
{
string[] A = { "1", "22", "333", "4444", "555", "66", "7" };
A.Where(m => m.Length > 2).ToList().ForEach(i => Console.Write("{0}t", i));
Console.ReadKey();
}
}
3. Как реализовывается
множественное
наследование в С#,
опишите варианты.
Тут конечно вопрос, что понимать под словом «множественное», если от многих интерфейсов, то да один интерфейс может наследватся от скольких
угодно. Но если Inherits вглубь от одного класса цепочкой то в любую глубину, хоть сто классов можно инхеритить один от другого. Другой вариант
наследования Implements - это когда создается уже реализация класса, любого по всей глубине цепочки. То есть создали цепочку из ста классов по
Inherits, потом от любого из них можно сделать Implements.
2. 4. Какие конструкции
языка С# может
содержать
интерфейс? Класс?
По крайней мере в синтаксисе бейсика членами интерфейса могут быть свойства (Property), Функции (Function), Процедуры (SUB), События (Event),
Структуры (Structure), другие интерфейсы, и классы тоже могут быть прописаны непосредственно внутри определения интерфейса, прямо строчка-за-
строчкой . Можно ли так делать в Шарпе - я не знаю. Я в основном пользуюсь синтасисом бейсика, как (1) более развитого языка, специально
разработанного микрософтом приприетарного языка для RAPID (быстрого) программирования (2) имеющего полную поддержку в Visual Stusio на
уровне ядра, без всяких решарперов. Чтобы понять, можно ли ту или иную конструкцию прописать в Шарпе я пользуюсь конвертером ТЕЛЕРИК. Он
конвертирует чисто. Вручную требуется только поправлять LINQ-запросы. Ну и надо не пользоватся основными могучими инструментами бейсика,
если планируется конвертировать прогу в упрощенные языки программирования, такие как Шарп. Ну для примера: (1) не пользоваться модулями
бейсика, (2) классом MY, (3) специфическим вводом-выводом, (4) библиотеками конвертации, специфическими вызовами процедур, которых не
бывает в Шарпе, как например (5) ParamArray, когда вообще функция вызывается с неопределенным количеством любых парметров, или например
(6) именнованным, а не позиционным вызовом функций, не надо пользовать обьявлениями переменных сразу с событиями (7) WithEvents - в Шарпе
так нельзя, в Бейсике популярны технология возбуждением событий, распространяющихся по всей иерархии классов с помощью (8) RaiseEvet - такой
технологии нет в Шарпе, в Бейсике можно писать код с (9) GOTO, в Шарпе такое не применяется, в бейсике обычно (10) даты и (11) XML обьявляются
прямо без кавычек и сразу являются нужными типами данных, а не текстовыми константами, нельзя пользоваться (12) условной компиляцией, нельзя
функции, (13) которые ничего не возвращают, нельзя пользоваться специфической (14) конвертацией бейсика переменных одного типа в другой тип
типа CINT, автоматичекой (15) инициализацией переменных, операторами спефическими типа (16) LIKE или (17) REDIM, аналоги которых вообще
отсутствуют в Шарпе, нельзя пользоваться, специфическими (18) DirecCast обьектов тоже, способами наследования классов (19) Shadow или (20)
явными вызовами конструкторов в базовых классах тоже(хотя принципиально в Шарпе уже существуют некоторые зародыши обьектного
программирования, но сильно упрощенные по сравнению с бейсиком), в общем это, конечно лишь начало перечесиления того, что привычно и удобно
в бейсике, за что именно он ценится, но что принципиально невозможно в Шарпе- грубо говоря возможности бейсика всегда можно использовать
лишь на чуть-чуть, примерно как в бейсике, который существовал до 2002-го года, такой бейсик легко конвертируется в Шарп. Можно ли в Шарпе
напрямую писать определение базового класса непосредственно в определении интерфейса - я не знаю, в бейсике это нормальная практика, все так
делают.
5. Чем отличаются
вложенные массивы
(jagged) от
многомерных (multi-
dimentional)? Какие
предпочтительнее?
Для каждой задачки нужны свои массивы, например в джаггед аррай записываются число дней по месяцам в году, двумерный массив нельзя
использовать, потому что в месяцах разное количество дней. А вообще арраи - это анахронизм. Я пользуюсь Аррайлистами.
6. Для чего нужны mock
объекты?
Моск-обьекты - это фиктивные обьекты, котоыре строятся по интерфейсам, которые загружаются во фреймворк, который поддерживает Ioc-
контейнеры. Применяются для тестирования или групповой разработки вместо ранее существуюей технологии proxy/stab, то есть заглушек в коде..
Вообще Ioc-контейнеры и mock-обьекты это зло, я ищу способы работать без этого, но к сожалению ТестДрайверДевелопмент основан на этом.
Сейчас эта технология стала распространятся как раковая опухоль. Вообще это длинный разговор, начнем его с того, что Ioc-контейнеры работают в
миллион раз медленнее, чем без них http://www.palmmedia.de/blog/2011/8/30/ioc-container-benchmark-performance-comparison
Хорошо, еще немного пояснений. Эта идеология была изобретена Всего несколько лет назад, пока себя положительно не сильно зарекомендовала, до
ее внедрения всю историю программирования работали иначе и все крупные проекты завершались гораздо успешнее (начиная от самых крупных
проектов человечества от изобретения атомной бомбы и полета человека в космос до написания OS/360). До изобретения этой спорной тезнологии
программисты писали просто заглушки, то есть фиктивные проги без тела, а потом по ходу написания тела (возможно другими программистами)
заглушка заменялась на реальный код с наполнением. То есть основным инструментом был Linker (редактор ссылок), который заменял заглушки на
реальный код. Скрипты всякие существовали, допустим АНТ, которые проверяли, заменены ли заглушки/пробки на реальный код. Но потом несколько
теоретиков от программирования выдвинули идею SOLID. Теоретики всегда выдвигают различные неудобоваримые идеи, вот я не поленился и
перечислил у себя а блоге сотню-другую противоречащих друг другу теорий программирования - http://www.vb-net.ru/ProgramTheory/index.htm - они
все противоречат друг-другу, но в какой-то мелкой детали каждая из них верная - ну примерно как Ислам и Христианство. Так вот, верующие в
SOLID-принцип как в Путина и в последнюю истину, предполагают, что надо начинать программировать не с головы, а с хвоста. То есть НЕ линкер
строит автоматически интерфейсы по написанным готовым заглушкам (которые пишутся раньше реального кода), а начинать программирование надо
с интерфейсов, то есть человек должен взять на себя обязанности Linker'а. То есть, в этой весьма-весьма спорной идее интерфейсы (написанные
3. ручками человеком, а не автоматически построенные редактором) эти интерфейсы появляются раньше кода с телом, кода со смыслом . Побочным
выкидышем этой спорной идеологии SOLID явились Ioc-контейнеры, в которые можно загрузить интерфейсы, чтобы другие проги могли ими
пользоваться. Ioc-контейнер представляет эти загруженные интерфейсы в виде MOCK-обьектов, которыми другие проги могут пользоваться.
Мое понимание спорности идеологии SOLID не мешает мне ею пользоваться ИНОГДА, то есть я могу сходить и в христианский храм и в мечеть. Но
только надо понимать, что SOLID-принцип (и ее побочный выкидыш в виде Ioc-контейнеров и моск-обьектов) - это НЕ абсолютная истина и если есть
способ обойти эту спорную идеологию (то есть, не разбивать себе лоб об пол в мусульманском храме) - то надо обходить эту спорную идеологию и
пользоваться более классической и проверенной долгими годами и большими проектами методологией программирования с помощью заглушек.
7. Чем отличаются const
и readonly
декларации?
Readonly может иметь инициалицию, а Const - нет.
8. Чем отличаются ref и
out параметры?
Разница в том, что out – это выходной параметр, а ref- входно-выходной. Для ref- параметра нужно передать его инициализированным, и можно
пользоваться его исходным значением. Out- параметр абсурдно инициализировать перед вызовом функции.
9. Перечислите способы
inter-process
communication
доступные для
использования в
.NET/C#
Гугл показывает на этот вопрос хороший список - Clipboard, COM, Data Copy, DDE, File mapping, Mailslots, Pipes, RPC, Windows Sockets.
Но я не вижу здесь главного способа взаимодействия процессов - через базу! Я использую именно его в 99% случаев. Ну и Filesystemwatcher я бы
добавил.
10
.
Опишите как .NET
Framework решает
проблему загрузки
сборок с одинаковіми
именами.
Я бы сказал что для этого существуют строгие имена и подписи у сборок. Каталоги вообще тут не при чем. Есть общий порядок поиска DLL (далее
копипаст из доков) - (1). Каталог, в котором находится исполняемый модуль текущего процесса. (2) Текущий каталог.(3). Системный каталог Windows.
Путь к этому каталогу извлекается с помощью функции GetSystemDirectory.(4). Каталог Windows. Путь к этому каталогу извлекается с помощью
функции GetWindowsDirectory.(5) Каталоги, указанные в переменной среды PATH. - как в одном каталоге (например в 1) могут оказаться две сборки с
одинаковыми именами?
11
.
Как влиять на порядок
вызова методов
мультикаст
делегатом?
При использовании групповых делегатов порядок вызова методов, прикрепленных к делегату, формально является неопределенным. Поэтому нужно
избегать при написания кода, который полагается на то, что эти методы должны быть вызваны в определенном порядке
12
.
Дайте пример
анонимного делегата
и укажите их
.особенности
namespace ConsoleApplication1
{
class Program
{
delegate string delegateTest (string val);
static void Main ()
{
string mid = ", средняя часть";
delegateTest anonDel = delegate (string param)
{
param += mid;
param +="добавлено к строке";
return param;
};
Console.WriteLine(anonDel("Начало строки"));
Console.ReadLine();
}
}
}
4. Преимущество - меньше кода. Более чистый код Бейсика, без ненужных бесконечных скобочек, точек с запятыми, скобочек после методов и прочего
синтаксического мусора Шарпа выглядит вот так. Можно написать это еще чище (без отдельного обьявления переменной Result) - так преимущество
синтаксиса Бейсика и цели его изобретения (быстрое программирование и КРАСИВЫЙ код без мусора - бесконечных бессмысленных скобочек и точек
запятыми) будет еще нагляднее. Правда, компактный синтаксис не настолько удобен для отладки.
Module Module1
Delegate Function MyDelegate(x As Integer, y As Integer) As Integer
Sub Main()
Dim instDelegate As MyDelegate
instDelegate = Function(x As Integer, y As Integer) x + y
Dim result As Integer = instDelegate(2, 3)
Console.WriteLine("Sum = " & result) : Console.ReadKey()
End Sub
End Module
13
.
Назовите примеры
использования partial
classes, как повторить
эту функциональность
не используя
ключевое слово
“partial”.
Классика ASP.NET вся так устроена - файл с версткой и файл с кодом - а класс один. Это в принципе моя любимая технология, на классике ASP.NET я
написал, наверное не один миллион строчек. Вот тут http://www.vb-net.ru/NewVotpusk/Index.htm - пара скринов - в одном только проекте у меня 300
тысяч моих строчек. А всего у меня порядка 200-т проектов. И имею ввиду только последние 15-ть лет, на .NET-фреймворк.
Как можно вообще разбить класс по нескольким файлам? И без Partial? Ну например записали один метод в одном файле, потом унаследовали класс
от первого файла и там определелили новый метод, который вызывает метод из первого файла. Получается что в сумме второй класс содержит код и
из первого класса и из второго.
14
.
Стандартные классы
.NET для работы c
HTTP ,запросами
когда какой
.использовать
Пара основных клссов для самых примитивных программ - HttpWebRequest и HttpWebResponse. Но принципиально, чтобы работать с HTTP нужны
многие десятки классов, начиная от обращения к DNS. Есть классы WebRequest, есть WebResponse, они есть в асинхронных вариантах (что весьма
актуально и реально используется в любой проге больше чем на пять строчек), есть классы управления хеадерами, есть классы управления
аутентификацие, есть классы WebExeptions, GetRequesStream для Постбеков, GetResponseStream, есть классы формирования URI. А если зацепить
аутентификацию и сертификаты, которые обычно используются для работы в Web-там будет бездна. Тыкаю в лоб в любой шаблон кода для работы
по HTTP, который выложен в интернете, как образец- https://developers.google.com/youtube/v3/docs/playlists/list - сколько там классов?
15
.
Перечислите способы
(вызова нативного not
managed) кода
.из NET.
1) Самый простой способ - прямой вызов из NET. Для этого каждая фунция не NET нуждается в опредлении, вот наприер в таком. Это пример важной
функции, которую я часто использую, это вызов черной консоли в WinForms-приложениях в которой что-то отрабатывает в командной строке.
<Runtime.InteropServices.DllImport("kernel32.dll", SetLastError:=True)> _
Private Shared Function AllocConsole() As
<Runtime.InteropServices.MarshalAs(Runtime.InteropServices.UnmanagedType.Bool)> Boolean
End Function
2) Но для меня, есть гораздо более простые способы вызовы COM. Шестой бейсик еще никто не отменял. И работает он гораздо чище, чем любые
.NET-проги, то есть не требует установленной NET-фреймворк и работает всегда и везде - потому что это чистые EXE-файлы и чистые COM-обьекты. Я
пишу на нем время от времени, особенно инсталяции, когда точно известно, что NET-фреймфорк там скорее всего нет. Вообще я работал на нем до
появления NET - с 1998-го 2002-й год, и потом до 2006-го (наверное), почти ежедневно. Потом с 2002-го начал работать на VB.NET и его становилось
все больше и больше, в 2005-м году программ на NET стало уже больше чем на VB6, ну а потом по убывающей я использовал VB6. Вот какой-то
перечень моих работ за 2005-й год http://www.vb-net.ru/wanted/MyProject.htm, там VB6 был уже намного меньше, чем VB.NET. Но по-прежнему это
главная технология производства и использования COM-обьектов, технология, откуда вообще появились COM-объекты - как для их использования,
так и для их программирования - ActiveX-компоненты, то есть COM-обьекты, это вообще основное, что создается в шестом бейсике, это кирпичики из
которых потом собирается приложение, все созданные COM-обьекты просто добавляются на форму и так создается приложение в шестом-бейсике,
грубо говоря это Юзер-контролы в терминологии NET.Framework. Вообще NET-фреймворк - это лишь суррогат с точки зренния COM, это попытка
5. использовать код шестого бейсика без собственно среды шестого бейсика, который тем не менее, несмотря на непонимание таких простых вещей
молодыми программистами, остается основным и незаменимым инструментом изготовления нативного кода (без NET-фреймворк), кода COM-обьекты,
кода который работает всегда и везде независимо от версий виндузни и версий NET-фреймворк и вообще наличия/отсутсвия NET-фреймоворк.
3) Еще один простой и важный способ - обратиться к виндузовому API - RunDLL32 тоже никто не отменял.
4) Еще есть куча отдельныйх утилит консольных для вызова любых COM-обьектов.
7) Часто вызывают часто COM-объекты из SQL-сервера, это хорошая площадка для хостинга COM-объектов
6) И еще в виндоусе существует служба-сервис DCOM, которая вызывает COM-обьекты на одном кампутере по запросам с другого кампутера.
7) Ну и наконец, NET-Remoting тоже позволяет вызывать COM-обьекты, я когда-то много писал такого кода. Можно попробовать поискать такой код
даже у меня на сайте. Вот какие-то куски моего кода 2003-2004-го кода, когда я пользовался активно этой технологией - http://www.vb-
net.ru/dotnet/tour13/index.htm и http://www.vb-net.ru/dotnet/tour15/index.htm - только прошло уже лет 14 лет, я не помню с ходу, для чего это было
нужно тогда и были ли тогда другие пути.
16
.
Как интерфейс
сделать доступным из
COM?
public
interface I1
{
string[]
DoSomething();
object
DoOtherThing();
}
COMВ какие типы
.NET будет
маршалить
возвращаемые
,значения как можно
изменить дефолтное
?поведение
ComVisible атрибут делает суррогатный обьект созданный в NET-фреймворк видимым как COM-обьект. Но он только определение класса экспортирует.
А для экспорта интерфейсов есть другие атрибуты. Вот пример общего шаблона кода для экспорта интерфейсов.
Imports System.Runtime.InteropServices
<Guid("1F249C84-A090-4a5b-B592-FD64C07DAB75"), _
InterfaceType(ComInterfaceType.InterfaceIsIDispatch)> _
Public Interface _demo
<DispId(1)> Function Concat(ByVal s1 As String, ByVal S2 As String) As String
<DispId(2)> ReadOnly Property ErrorMsg() As String
End Interface
<Guid("E42FBD03-96DF-43a7-A491-23E735B32C5C"), _
ClassInterface(ClassInterfaceType.None), _
ProgId("comDemo.demo")> _
Public Class demo
Implements _demo
Private csError As String
Public ReadOnly Property ErrorMsg() As String
Get
Return csError
End Get
End Property
Public Function Concat(ByVal str1 As String, ByVal str2 As String) As String
Return Concat = str1 + " " + str2
End Function
End Class
Что касается типов, в которые экспортироваться NET-переменные, то есть документация, где это описано https://msdn.microsoft.com/en-
us/library/z6cfh6e6(v=vs.110).aspx - там же перечислены атрибуты, которыми все это можно поменять. Там есть параметры компилятора для этих
атрибутов, например Unmanaged-коде и другие, чтобы привести типы NET-фрамеворк к стандартным типам Шестого бейсика и наоборот.