Я бы немного уточнил.
Магия тут не в len() — len всегда делает одно и то-же: берет поле Len из слайса, который представляет из себя структуру вида.
type Slice struct {
Data uintptr
Len int
Cap int
}
Магия тут в "касте" nil в слайс ( при сравнение или присвоении ). Сравнение слайса с nil — это сравнение со Slice{0,0,0} что является значением по умолчанию при иницализации переменной слайса. В результате — только-что созданный слайс == nil
Зачем так было сделано? Как уже было написано — возможность работать со слайсом без дополнительных проверок. Это из того-же порядка что и отсутсвие необходимости инициализировать переменную типа bool.
На вашем сайте нет вообще ни каких подробностей. Например — жилье. Я могу его купить? Если да, за сколько? Какие планировки есть? Упомянуты таунхаусы, в них есть аренда? Если нет, сколько они стоят при покупке? Какие планировки? Есть ограничения на аренду/покупку ( например — я должен работать в одной из ваших компаний-резидентов ) или это свободный рынок?
Немножечко не работает:
$ gdb ./TestCode
Program received signal SIGSEGV, Segmentation fault.
(gdb) bt
#0 0x00007fff8a2ac434 in pthread_mutex_lock () from /usr/lib/system/libsystem_pthread.dylib
#1 0x00007fff8219cf4d in closedir () from /usr/lib/system/libsystem_c.dylib
#2 0x000000010001c5c7 in CST::Common::listFiles (dir=...) at ../../common-libs/common/common_utilities.cpp:342
#3 0x000000010000d87b in Componentality::Graphics::LoadableFontSet::deserialize (this=0x7fff5fbff628) at ../Graphics/Fonts/FontSet.cpp:328
#4 0x0000000100000b7d in main (argc=, argv=0x1100004) at ../Graphics/TestCode/TestCode.cpp:23
Это очень интересное предложение в контексте докера. Одно из главных его преимуществ — это одинаковое окружение как в бою так и на ноутбуке разработчика. И портирование на Windows docker для меня означает в том числе то, что я смогу на своем ноутбуке сказать docker run и получить окружение как в бою. Вот это как раз у меня вызывает сомнения — портируемость окружения, именно это в первую очередь я-бы стал проверять в beta windocker`а. А вы мне предлагаете проверить это на нескольких идентичных виртуальных машинах в облаке? Тогда это ни чем не лучше proof-of-concept
>>Кстати интересно, что она анонсирована, а «пощупать» ее еще нельзя. Если судить по предыдущей технологии, через два года будет релиз?
>Пощупать можно. Я же привёл цитату. Соответствующее обновление будет доступно в программе
Верятно у нас разные понятния слова «пощупать». Вы предлагаете скачать отдельный билд ОС, запустить его в виртуалке (или где там).
В моем понимании пощупать, это попользовать технологий в приближенных к реальным условиях ( на основном рабочем компе, например ). Тот-же docker под linux так и щупался, прямо на основной рабочей машине.
Не поймите меня не правильно, технически — у вас есть хорошие решения. Во времена 7-ки, например, у вас был лучший I/O шедулер для десктопа из всех. Я просто не понимаю вашего отношения к пользователям. Типа того-же докера, который доступен только на серверной редакции Windows.
> Вот .NET на Linux — dotnet.github.io/getting-started — Windows, Ubuntu, OS X, Docker
Ок, согласен, оно есть :) Конечно странно что бинарники раздаются из репозитория на странном домене trafficmanager.net а не из PPA, например, но оно правда есть и работает. Проведу пар тестов производительности и напишу результат сюда.
> Я вот на сайте Docker вижу инструкцию, как установить Docker для Windows docs.docker.com/windows/step_one
Как вам уже написали, это VBox версия.
> Windows Containters будут доступны в Windows Server 2016 и сейчас можно посмотреть на них в бете
Т.е. через два годна после анонса доступна только бетта? И только в виде образа?
>Анонсирована бета-версия подсистемы Ubuntu on Winows. Не рано ли говорить, что что-то не работает?
Кстати интересно, что она анонсирована, а «пощупать» ее еще нельзя. Если судить по предыдущей технологии, через два года будет релиз?
— Июль 2009 — Microsoft отправляет 20 000 строк кода в ядро Linux
Строки кода, это хорошо, а какую конкретно функциональность вы туда добавили? Совместимость с вашим проприератрым гипервизором?
— Октябрь-ноябрь 2014 — поддержка Docker и анонс .NET на Linux
На дворе 2016 год, На сайте www.docker.com мне предлагают скачать docker-over-virtualbox для windows. Про нативный даже упоминания нет.
.Net на linux где? — www.bing.com/search?q=.NET+Linux говорит мне, что есть только mono.
— Ноябрь-декабрь 2015 — партнерство Red Hat и Microsoft, сертификация Microsoft Learning — Linux on Azure вместе с Linux Foundation Certified System Administrator.
Т.е. вместо открытой документации — платные курсы и сертификация.
— Март 2016 – SQL Server будет доступен на Linux. Подсистема Ubuntu в Windows 10 и нативный Bash анонсированы в рамках Build.
Нативный bash в консоли в которой не работает даже tmux.
Спасибо.
Правильно-ли я понял, что остально — ( Python/PHP/JS/SQL ) в IDEA аналогично спецализированным IDE *Storm, DataGrip и т.д.?
Поэтому перенести без проектной модели = сделать поддержку другой проектной модели, а мы пока не готовы к такому (ни по ресурсам, ни по ряду технических причин).
А где у вас можно почитать про эту "проектную модель"?
Там, на самом деле, есть другая проблема. Запуск одновременно двух IDE наших на одном проекте приводит к тому, что они начинают показывать нотификацию и предлагать перезагрузить проект (отказаться можно, но это все равно действие какое-то). Что не удобно. Надеюсь, это мы скоро пофиксим.
А вот с этим я не сталкивался ни разу — обычно на разных языках все-таки написаны разные части проекта.
iOS разработка — это AppCode, там С/С++ как раз из CLion (у них в этом месте общая кодовая база просто исторически)
JNI — вроде есть Android Studio (с C++ поддержкой на базе CLion)
Дело в том, что есть кросплатформенные проекты.
Например уже приведенный пример — Flash + iOS/Android биндинги + С код. Нельзя получить Flash в Android Studio ибо он, насколько я знаю — он есть только в IDEA Ultimate, не говоря о том, что-бы получить все в одном месте.
Кстати интересно — сейчас посмотрел в IDEA Ultimate можно создать Android проект. В Android Studio можно создать Android проект (очевидно). Но там, еще по вашим словам, есть поддержка C++. В этом свете очень странно выглядит то, что в IDEA возможности поддержать С++.
Тут скорее архитектурный вопрос — переносить в плагин только C++ как языковую поддержку или с проектной моделью?
Вот тут я сольюсь ибо пользовался только IDEA Ultimate и не видел там большой разницы между Python/PHP/JS/Go/Perl/AS проектом.
Однако, можете прояснить, если вас не затрудит, чего НЕТ в IDEA Ultimate кроме проддержки С/С++ из CLion, ObjC, C# (очевидно).?
Ибо, например, там есть утилиты для работы с базой, но они такие-же как в DataGrip или нет?
Спасибо за ответ.
Но, кажется я неправильно сформулировал основную проблемы:
-"Не понятно что есть в какждой конкретной IDE"
-"Не понятно быстро выбрать нужный тебе набор"
Т.е. вы говорите "планируется, просто задача не совсем первоочередная" — я правильно понимаю, что есть какие-то технические ограничения? Всмысле, я переехал на ваши продуты с Eclipse и его устройство кажется логичным — Базовая платформа + Плагины для языков. Ваши продукты выглядят так, что кажется что они устроенны аналогично, и вопрос включать тот или иной плагин в IDE — для вас "организационный" а не технический. Ну и то, что All Products Pack стоит дешевле чем каждая IDE в отдельности — подтверждает эту догадку.
Так вот, про use case: я могу привести несколько:
PHP + C++ PHP framework phalcon, написанный на C++ как экстеншен для PHP
Java + C++ — JNI
Perl + C/C++ XS модули
Flash ( AIR ) на iOS с С кодом. Flash в одной IDE, ObjC в другой, С в третьей.
И в тех случаях которые я видел — потребность возникает с первого языка. Т.е. человеку нужно только PHP, он покупает себе, допустим PHPStorm, а потом оказывается что ему нужны еще С++
Это очень странно. В смысле, если-бы у вас была базовая платформа (Вроде IDEA Community) и к ней можно было-бы докупать модули для языков-технологий (ну или бандл "все сразу в одной IDE") — это было-бы удобно, по крайней мере для тех разработчиков которых я знаю. А сейчас когда советуешь вашу IDE кому-то нельзя даже сказать "ну купи подписку на все" или "IDEA Ultimate тебе подойдет" потому что наверняка он наткнется на то, что ему прийдется открывать один проект в нескольких IDE.
У вас очень странная политика разделения на продукты. т.е. ReSharper AppCode — понятно, ибо биндинг к платфоме. С узконаправленными продуктами — тоже, нужна JS IDE — вот тебе WebStorm. А вот с мультиязыком и поддержкой фич в разных IDE — проблемы.
Например, есть проект на… Perl с С++ модулями и фронтендом на Angular. Задача — выбрать подходящую IDE из вашего набора:
1) perl — открытый плагин и встанет везде.
2) C++ есть только в CLion или он есть в IDEA Ultimate? (так-же как там есть… PHP, например)
3) html/css/less есть IDEA Ultimate, в storm, есть-ли он в CLion?
4) js есть в IDEA Ultimate, в storm (вероятно?) и скорее всего нет в CLion.
Самое интересное, что переход с подписки IDEA на "All Products" — не избавит меня от этих проблем — прийдется для одного проекта использовать несколько IDE.
Интересно получается. Мы продаем вам далеко не дешевый продукт, ЗНАЯ, что в нем ЕСТЬ баги, но мы их исправим когда-нибуть потом, а вам знать о том что в нем есть баги — нельзя. Иначе — в тюрьму.
Вот этого я ни когда не понимал, VMWare продает очень недешевые продукты, но вместо того что-бы распихивать по всему интернету статьи, туториалы и гайды эта информация скрывается и продается за отдельные деньги. От, скажем Cisco такое поведение ожидаемо — у них открытых аналогов. От Oracle тоже — они продают софт не технарям. А вот у VMWare есть опенсорсные / гораздо более открытые аналоги.
Я бы немного уточнил.
Магия тут не в len() — len всегда делает одно и то-же: берет поле Len из слайса, который представляет из себя структуру вида.
Магия тут в "касте" nil в слайс ( при сравнение или присвоении ). Сравнение слайса с nil — это сравнение со
Slice{0,0,0}
что является значением по умолчанию при иницализации переменной слайса. В результате — только-что созданный слайс== nil
Зачем так было сделано? Как уже было написано — возможность работать со слайсом без дополнительных проверок. Это из того-же порядка что и отсутсвие необходимости инициализировать переменную типа
bool
.$ gdb ./TestCode
Program received signal SIGSEGV, Segmentation fault.
(gdb) bt
#0 0x00007fff8a2ac434 in pthread_mutex_lock () from /usr/lib/system/libsystem_pthread.dylib
#1 0x00007fff8219cf4d in closedir () from /usr/lib/system/libsystem_c.dylib
#2 0x000000010001c5c7 in CST::Common::listFiles (dir=...) at ../../common-libs/common/common_utilities.cpp:342
#3 0x000000010000d87b in Componentality::Graphics::LoadableFontSet::deserialize (this=0x7fff5fbff628) at ../Graphics/Fonts/FontSet.cpp:328
#4 0x0000000100000b7d in main (argc=, argv=0x1100004) at ../Graphics/TestCode/TestCode.cpp:23
OS X 10.11
>Пощупать можно. Я же привёл цитату. Соответствующее обновление будет доступно в программе
Верятно у нас разные понятния слова «пощупать». Вы предлагаете скачать отдельный билд ОС, запустить его в виртуалке (или где там).
В моем понимании пощупать, это попользовать технологий в приближенных к реальным условиях ( на основном рабочем компе, например ). Тот-же docker под linux так и щупался, прямо на основной рабочей машине.
Не поймите меня не правильно, технически — у вас есть хорошие решения. Во времена 7-ки, например, у вас был лучший I/O шедулер для десктопа из всех. Я просто не понимаю вашего отношения к пользователям. Типа того-же докера, который доступен только на серверной редакции Windows.
Ок, согласен, оно есть :) Конечно странно что бинарники раздаются из репозитория на странном домене trafficmanager.net а не из PPA, например, но оно правда есть и работает. Проведу пар тестов производительности и напишу результат сюда.
> Я вот на сайте Docker вижу инструкцию, как установить Docker для Windows docs.docker.com/windows/step_one
Как вам уже написали, это VBox версия.
> Windows Containters будут доступны в Windows Server 2016 и сейчас можно посмотреть на них в бете
Т.е. через два годна после анонса доступна только бетта? И только в виде образа?
>Анонсирована бета-версия подсистемы Ubuntu on Winows. Не рано ли говорить, что что-то не работает?
Кстати интересно, что она анонсирована, а «пощупать» ее еще нельзя. Если судить по предыдущей технологии, через два года будет релиз?
— Июль 2009 — Microsoft отправляет 20 000 строк кода в ядро Linux
Строки кода, это хорошо, а какую конкретно функциональность вы туда добавили? Совместимость с вашим проприератрым гипервизором?
— Октябрь-ноябрь 2014 — поддержка Docker и анонс .NET на Linux
На дворе 2016 год, На сайте www.docker.com мне предлагают скачать docker-over-virtualbox для windows. Про нативный даже упоминания нет.
.Net на linux где? — www.bing.com/search?q=.NET+Linux говорит мне, что есть только mono.
— Ноябрь-декабрь 2015 — партнерство Red Hat и Microsoft, сертификация Microsoft Learning — Linux on Azure вместе с Linux Foundation Certified System Administrator.
Т.е. вместо открытой документации — платные курсы и сертификация.
— Март 2016 – SQL Server будет доступен на Linux. Подсистема Ubuntu в Windows 10 и нативный Bash анонсированы в рамках Build.
Нативный bash в консоли в которой не работает даже tmux.
Правильно-ли я понял, что остально — ( Python/PHP/JS/SQL ) в IDEA аналогично спецализированным IDE *Storm, DataGrip и т.д.?
А где у вас можно почитать про эту "проектную модель"?
А вот с этим я не сталкивался ни разу — обычно на разных языках все-таки написаны разные части проекта.
Дело в том, что есть кросплатформенные проекты.
Например уже приведенный пример — Flash + iOS/Android биндинги + С код. Нельзя получить Flash в Android Studio ибо он, насколько я знаю — он есть только в IDEA Ultimate, не говоря о том, что-бы получить все в одном месте.
Кстати интересно — сейчас посмотрел в IDEA Ultimate можно создать Android проект. В Android Studio можно создать Android проект (очевидно). Но там, еще по вашим словам, есть поддержка C++. В этом свете очень странно выглядит то, что в IDEA возможности поддержать С++.
Вот тут я сольюсь ибо пользовался только IDEA Ultimate и не видел там большой разницы между Python/PHP/JS/Go/Perl/AS проектом.
Однако, можете прояснить, если вас не затрудит, чего НЕТ в IDEA Ultimate кроме проддержки С/С++ из CLion, ObjC, C# (очевидно).?
Ибо, например, там есть утилиты для работы с базой, но они такие-же как в DataGrip или нет?
Но, кажется я неправильно сформулировал основную проблемы:
-"Не понятно что есть в какждой конкретной IDE"
-"Не понятно быстро выбрать нужный тебе набор"
Т.е. вы говорите "планируется, просто задача не совсем первоочередная" — я правильно понимаю, что есть какие-то технические ограничения? Всмысле, я переехал на ваши продуты с Eclipse и его устройство кажется логичным — Базовая платформа + Плагины для языков. Ваши продукты выглядят так, что кажется что они устроенны аналогично, и вопрос включать тот или иной плагин в IDE — для вас "организационный" а не технический. Ну и то, что All Products Pack стоит дешевле чем каждая IDE в отдельности — подтверждает эту догадку.
Так вот, про use case: я могу привести несколько:
И в тех случаях которые я видел — потребность возникает с первого языка. Т.е. человеку нужно только PHP, он покупает себе, допустим PHPStorm, а потом оказывается что ему нужны еще С++
Это очень странно. В смысле, если-бы у вас была базовая платформа (Вроде IDEA Community) и к ней можно было-бы докупать модули для языков-технологий (ну или бандл "все сразу в одной IDE") — это было-бы удобно, по крайней мере для тех разработчиков которых я знаю. А сейчас когда советуешь вашу IDE кому-то нельзя даже сказать "ну купи подписку на все" или "IDEA Ultimate тебе подойдет" потому что наверняка он наткнется на то, что ему прийдется открывать один проект в нескольких IDE.
Например, есть проект на… Perl с С++ модулями и фронтендом на Angular. Задача — выбрать подходящую IDE из вашего набора:
1) perl — открытый плагин и встанет везде.
2) C++ есть только в CLion или он есть в IDEA Ultimate? (так-же как там есть… PHP, например)
3) html/css/less есть IDEA Ultimate, в storm, есть-ли он в CLion?
4) js есть в IDEA Ultimate, в storm (вероятно?) и скорее всего нет в CLion.
Самое интересное, что переход с подписки IDEA на "All Products" — не избавит меня от этих проблем — прийдется для одного проекта использовать несколько IDE.
Т.е. если этого прибытия не происходит, обязательств тоже не возникает.