Что такое Яндекс — почему он называется именно Яндексом
Обновлено 28 декабря 2020- Почему Yandex называется Яндексом?
- Что такое Яндекс и что он представляет из себя сегодня?
Здравствуйте, уважаемые читатели блога KtoNaNovenkogo.ru. Если вы еще не знакомы, то хочу представить вам один из самых популярных онлайн сервисов рунета под названием Яндекс. Существует он аж с 1996 года и на заре своего становления это была исключительно только поисковая система.
Давайте вопрос «что такое Яндекс сегодня» чуток отложим, а поговорим о том, откуда появилось такое странное название. Почему именно Яндекс? По этому поводу существует несколько трактовок и все они отвечают на поставленный вопрос.
Правда только одна из них отражает реальный ход размышлений автора этого сверхпопулярного сейчас слова, коим был один из отцов-основателей этой поисковой системы — Илья Сегалович (к сожалению, ушедший от нас в середине прошлого года).
Почему Yandex называется Яндексом?
На приведенном фото он крайний слева. Рядом с ним стоит его соратник и второй основательно Яндекса — Аркадий Волож. Ну, а справа стоят Сергей Брин и Ларри Пейдж — основатели поисковой системы Гугл. Это фото сделано в начале нашего века, когда компания Google планировала купить наш отечественный поисковик и ее руководители приезжали в Россию для переговоров, но сделка так и не состоялась.
Итак, перед Ильей стояла нелегкая задача — выбрать название для будущего поисковика (еще не доступного в то время через интернет) и при этом не ударить лицом в грязь. За основу было взято ключевое для поиска слово index (читайте про то, как работают поисковики и как важен для них индекс, и что это вообще такое).
Было принято решение, что словообразующей фразой станет «yet another indexer», что в переводе означает «еще один индексатор». В общем, довольно-таки скромно и без всяких заявок на будущий ошеломляющий успех. Английский язык тогда в России был «фетишем» и, естественно, что поисковая система первоначально получила название именно на латинице: YANDEX (Yet Another iNDEXer).
Однако, основной фишкой Яндекса в то время (да и сейчас тоже) являлось то, что он ищет ответы в интернете с учетом русской морфологии. Кроме него в то время это делал только Рамблер, который сейчас уже не является полноценным поисковиков. В общем, отцы-основатели решили, что нужно добавить в начале русскую букву Я вместо английской Y и получилось ЯNDEX. Это уже можно было интерпретировать, как Языковой INDEX.
В то время его главная страница выглядела так (дизайн Темы Лебедева):
В 2008 году мода на написание названий компаний латинскими буквами сошла на нет и ЯNDEX стал называться просто Яндексом.
Есть еще несколько трактовок, почему Яндекс называется именно Яндексом, и несмотря на то, что они вполне логичны и лаконичны, появились они уже после утверждения официального названия. Одну из них я уже упоминал — Языковый iNDEX.
Ну, а вторая гласит, что если взять в слове index первую букву «I» и перевести состоящее из нее слово с английского на русский, то как раз и получится местоимение «Я» — отсюда и ЯNDEX. Версия красивая, но несколько отличная от произошедшего в реальности.
Что такое Яндекс и что он представляет из себя сегодня?
Как я уже упоминал, на заре своего становления этот онлайн сервис был исключительно поисковой системой. Он и сейчас ею является, причем его доля на рынке рунете весьма весомая и составляет более шестидесяти процентов.
Но время текло и все менялось. С каждым новым годом существования Яндекс обрастал все новыми и новыми сервисами и возможностями. Некоторые из них дошли до нашего времени неизменными, некоторые изменились, объединились или даже закрылись, как, например, Народ.
Сейчас, если Вы ищите товар, то наверняка обращаетесь к Яндекс.Маркету, чтобы подобрать оптимальный по цене и отзывам магазин. Если едите куда-то, то переходите на сервис Яндекс Карт с отображением дорожной обстановки (пробок).
Для многих этот онлайн сервис стал порталом, с которого они ежедневно начинаю свой серфинг по интернету. Это особенно удобно потому, что главная страница Яндекса, подобно рабочему столу в Виндовс, имеет возможность добавления виджетов, настройки внешнего вида за счет использования тем, а также с нее доступны все остальные сервисы этого мега-портала.
Так что же такое Яндекс? Одним словом и не ответишь. Давайте я перечислю все сервисы собранные под его крылом, о которых мне довелось подробно писать. Наверное, так будет гораздо проще и нагляднее.
- Как получить паспорт Яндекса — в отличии от Гугла, зеркало рунета изначально приняло решение об использовании своей главной (стартовой) страницы для удобства пользователей.Ну, и по аналогии с Гугл аккаунтом был введен Паспорт, который действителен на всей территории всех владений этой поисковой системы.
- Яндекс Вебмастер — то место, куда все владельцы сайтов добавляют свои ресурсы, чтобы следить за их индексацией и видимостью в этой поисковой системе.
- Яндекс Деньги — наверное, вторая по популярности после Вебмани платежная система в рунете. Хотя, если брать в расчет QIWI Wallet, то получается, что третья.
- Директ — здесь можно заказать рекламу ваших товаров или услуг на страницах поиска (реклама отображается сверху или снизу поисковой выдачи).
- Яндекс Карты — очень популярный среди Россиян сервис, ибо он предоставляет информацию о дорожных пробках, позволяет прокладывать маршруты и создавать свои собственные (народные) карты.
- Рекламная сеть Яндекса — это оборотная сторона Директа. Дело в том, что Yandex обладает отлаженной системой работы с контекстной рекламой, так почему же ему ограничиваться лишь своей собственной поисковой выдачей (страницей с результатами поиска)?В общем, если у вас есть свой сайт с ежесуточной посещаемостью большей или равной 300 уникальных посетителей в сутки, то регистрируйтесь в Профит Партнере(официальном центре обслуживания партнеров РСЯ) и зарабатывайте, получайте призы и партнерские вознаграждения. Без балды — это реальный способ заработать.
- Яндекс Метрика — система статистики посещаемости сайтов, которая отличается от аналогичного инструмента Гугла (Аналистикса) тем, что имеет интуитивно понятный и нарядный интерфейс, а также проста в освоении.
- Яндекс почта — на рынке рунета успешно конкурирует с почтой на Майле, ну и оттягивает на себя часть пользователей от Джимейла.По функционалу новая инкарнация Yandex Mail не сильно уступает последнему, а в некоторых аспектах даже превосходит. Например, имеется бесплатная возможность получения почты для домена, что в Гугле сейчас стало стоить малую копеечку (почта для домена в Гугл Аппс).
- Диск — файловое хранилище, которое призвано стать реальной альтернативой Дропбоксу (читайте про то, как пользоваться Dropbox) или хранилище OneDrive.
Яндекс Дзен — новый сервис предлагающий пользователям свежую подборку материалов по интересующим их тема. Подборка формируется автоматически на основе предпочтений каждого конкретного пользотеля. Подробнее о сервисе читайте по приведенной ссылке.
- Поиск по вашему сайту от Яндекса — поисковый движок любой СМС, на которой будет работать ваш сайт, всегда будет хуже, чем данный инструмент. Поэтому не примените его установить, ну или его аналог от Гугла.
- Тиц и Виц Яндекса — это не сервисы, но важные инструменты, с помощью которых компания оценивает статический вес всех проиндексированных документов, а обычные пользователи могут оценить, за какую цену стоит продавать или покупать ссылки с определенных сайтов (читайте про биржи статей Миралинкс, вечных ссылок ГГЛ или Ротапост)
- Народ — почивший в бозе (а точнее в Юкозе) бесплатный конструктор народных сайтов. Раньше не нем можно было создавать бесплатные сайты или хранить и передавать файлы (последнюю функцию на себя взял описанный чуть выше Диск)
- Яндекс бар (Элементы) — довольно популярная надстройка над браузерами, которая, правда, самой поисковой системе гораздо нужнее, чем пользователям (установка поиска по умолчанию, домашней страницы, сбор пользовательских предпочтений и т. п.).Да, все это не так агрессивно реализовано, как у поисковой системы Вебальта, но что-то общее имеется.
- Визуальные закладки — раньше подобная штука была в Опере (экспресс-панель), но благодаря нашему герою, теперь эти закладки можно использовать в любом браузере (устанавливаются как плагин).
- Яндекс Браузер — сделан на том же движке, что и Гугл Хром, но обладает рядом индивидуальных особенностей, которых нет у конкурентов.
- Блок Поделиться — набор кнопок для добавления анонсов статей на сайте в популярные социальные сети. Статистику этого блока можно отслеживать в Метрике.
- Апдейты Яндекса — это не сервис и не инструмент, а просто констатация того, что эта поисковая система пока еще не способна осуществлять ранжирование в реальном времени и обновляет поисковую выдачу дискретно через определенные неравнозначные временные интервалы, которые и принято называть апом.
- Яндекс картинки — может искать не только по введенным в поисковую строку словам или фразам, но и осуществлять поиск по картинке, которую вы загрузите со своего компьютера или укажите ее местоположение в интернет.
- Видео — онлайн сервис подобный Ю-тубу от Google.
- Yandex Translate — ну, конечно же, это далеко еще не Google translate, но тоже дает очень неплохой перевод, правда на гораздо меньшее число языков.
- Онлайн-проверка правописания — сервис очень удобный и вполне претендует на звание лучшего в рунете.
- Каталог — самый популярный каталог сайтов всего рунета, но, к сожалению, попасть туда даже на платной основе удается далеко не всем.
- Вордстат — первый помощник тем, кто уже усвоил что такое Seo, ибо позволяет собрать статистику поисковых запросов, чтобы потом писать под них статьи.
- Лимиты в Яндекс.XML — очень специфическая вещь, которую в двух словах не объяснишь, но вы можете прочитать статью приведенную по ссылке.
Думаю, что теперь, хотя бы в общих чертах, вам стало ясно, что такое Yandex и насколько он велик и могуч. Спасибо.
Удачи вам! До скорых встреч на страницах блога KtoNaNovenkogo.ru«Яндекс» и «Касперский» вошли в Топ-50 самых инновационных компаний мира
| Поделиться Российские компании «Яндекс» и «Лаборатория Касперского» признаны одними из самых инновационных в мире. По мнению американских аналитиков, они более инновационны, чем Microsoft и Cisco Systems.Американский журнал Fast Company впервые включил в список 50 самых инновационных компаний мира сразу две российские фирмы — «Яндекс» и «Лабораторию Касперского». Первая заняла 26 строчку, вторая — 32. Обе российские компании обошли Microsoft, Samsung и Cisco Systems, а «Яндекс» — еще и IBM с Amazon.
«Название поисковика происходит от фразы «yet another indexer» («еще один индексатор»), однако компания «Яндекс» — это нечто большее, — говорит представитель «Яндекса»
«Основанная в Москве «Лаборатория Касперского» давно является магнитом для молодых компьютерных гениев, заставляя их перейти от их любимого занятия — хакерства — к анализу угроз, — заявил основатель и глава компании
«Когда в 1997 г. мы начинали с пустыми карманами и сторонней финансовой поддержкой, мы знали, что достичь международного успеха нам помогут лишь две вещи — инновации и качество, — продолжает Касперский. — Сегодня нашими решениями пользуются Microsoft, IBM и Cisco, и наш портфель охватывает мобильный сегмент. В 2010 г. мы выпустили технологию, которая защищает мобильные устройства без расхода дополнительного заряда батареи».
Топ-50 самых инновационных компаний мира
Место | Компания | Место в прошлом рейтинге |
1 | Apple | 3 |
2 | 50 | |
3 | 1 | |
4 | Nissan | — |
5 | Groupon | — |
6 | 4 | |
7 | Dawning Information Industry | — |
8 | Netflix | 12 |
9 | Zynga | |
10 | Epocrates | — |
11 | Trader Joe’s | — |
12 | — | |
13 | Burberry | — |
14 | Kosaka Smelting And Refining | — |
15 | Foursquare | — |
16 | ESPN | — |
17 | Turner Sports | — |
18 | Huawei | 5 |
19 | Intel | |
20 | Syncardia | — |
21 | Donorschoose. org | — |
22 | Ebay | — |
Nike | 13 | |
24 | — | |
25 | Wieden + Kennedy | — |
26 | Yandex | — |
27 | Amazon | 2 |
28 | Opening Ceremony | — |
29 | IBM | 18 |
30 | Amyris | — |
31 | Double Negative | — |
32 | Kaspersky Lab | — |
33 | Pepsico | — |
34 | Univision | — |
35 | Snohetta | — |
36 | Marks & Spencer | — |
37 | Microsoft | 48 |
38 | Solarcity | — |
39 | Shaadi. com | — |
40 | Voxiva | — |
41 | Cisco | 17 |
42 | Enerkem | — |
43 | Samsung | 36 |
44 | Pandora | — |
45 | GE | 19 |
46 | Changchun Dacheng Industrial Group | — |
47 | Azul | — |
48 | Stamen Design | — |
49 | FX | |
50 | Madecasse | — |
Источник: Fast Company
Как выгодно покупать лицензии во времена «арендной модели»
БизнесРейтинг 50 ведущих мировых инновационных компаний публикуется редакцией Fast Company ежегодно. По информации издания, он составляется на основе мнений экспертов, анализа продуктов и количественных результатов. Помимо «Яндекса» и «Лаборатории Касперского в него попали такие компании, как Apple (1), Twitter (2), Facebook (3), Groupon (5), Intel (19), Amazon (27), IBM (29), Microsoft (37), Cisco Systems (41), Samsung (43) и другие.
«Это те фирмы, которые будут задавать направления развития мирового рынка. Которые не боятся экспериментировать, используют нестандартные идеи и знают, к чему стремятся, — говорится в пояснению к рейтингу. — Список принес нам много сюрпризов, но за исключением первого места. В том, что самой инновационной компанией является Apple, у нас не было никаких сомнений».
Сергей Попсулин
Frankfurter Allgemeine Zeitung (Германия): надежда Москвы в сфере информационных технологий | Экономика | ИноСМИ
На юго-западе Москвы недавно появились необычные автомобили: на крышах у них установлены большие ящики с торчащими в разные стороны насадками, напоминающими сирены.
Яндекс — крупнейший IT-концерн России. Изначально это был поисковик, успешно конкурирующий на местном рынке с Google. Но теперь Яндекс — это нечто большее: он стал частью повседневной жизни россиян. У него есть собственный навигатор и приложение, информирующее пользователей обо всем, что связано с транспортом, а также службы такси, каршеринга и доставки еды — на улицах буквально на каждом углу можно увидеть курьеров в фирменных желтых куртках и с желтыми термосумками. А теперь Яндекс предлагает и беспилотные автомобили. Сейчас их тестируют в Москве, Тель-Авиве и американском штате Мичиган.
С их помощью глава Яндекса Аркадий Волож намерен пробиться на международный рынок. 56-летний предприниматель возглавляет концерн с 1990-х годов. Первую версию поисковика, название которого по-английски — Yandex — расшифровывается как yet another indexer («еще один индексатор»), он придумал вместе со школьным товарищем Ильей Сегаловичем, который в 2013 году умер от рака.
Волож и Сегалович выросли в Казахстане, который тогда еще был частью Советского Союза. Оба успешно участвовали в математических олимпиадах, а в начале 1980-х годов переехали в Москву на учебу. В 1997 году появился Яндекс, в том же году начал свой победоносный марш по виртуальному миру и Google. Сегалович как-то рассказал, что в 2003 году основатели Google Сергей Брин и Ларри Пейдж приезжали в Москву с целью покупки Яндекса, но они с Воложем отказались его продавать.
Воложу не нравится, когда Яндекс называют «российским Гуглом» — он предпочитает называть свой концерн «российской Кремниевой долиной», поскольку Яндекс причастен практически ко всем сферам человеческой жизни, превратившись, по сути, в экосистему и охватывая как онлайн-, так и офлайн-рынки.
В отличие от Сегаловича, который активно участвовал во всевозможных публичных дебатах и в общественной жизни, Волож предпочитает оставаться в тени. О его личной жизни известно не слишком много: он женат, у него трое детей. Он имеет гражданство Мальты, которое приобрел за инвестиции в экономику этой страны. В настоящий момент Волож занимает 76-е место в российском «списке Форбс» с личным состоянием в размере 1,2 миллиарда долларов. По этому показателю он немного отстает от олигархов, связанных с нефтяной и газовой отраслью.
BloombergDer SpiegelNeue Zürcher ZeitungВ то же время у Воложа есть и кое-какие преимущества: он сумел самостоятельно создать успешный продукт, который превратился в символ небольшой, но перспективной российской экономики за пределами огромного государственного сектора. А еще ему удалось, несмотря на постоянные попытки вмешательства со стороны государства, от которых страдают многие компании, чьи акции торгуются на Нью-Йоркской и Московской биржах, найти приемлемое решение этой проблемы. Согласно официальной версии, Кремлю важно защитить данные российских пользователей от вмешательства иностранных инвесторов. В прошлом году обе стороны договорились об изменении структуры руководства концерна, в связи с чем у государства появятся дополнительные возможности в этой области.
Насколько долго продержится эта модель, пока не понятно. Но для Воложа эту договоренность можно назвать успехом — ведь все могло закончиться намного хуже, и при определенных условиях Яндексу грозила бы потеря сотрудников, многие из которых критически настроены по отношению к Кремлю. IT-специалисты очень важны для России, ведь многие из них стремятся перебраться в Европу или в Кремниевую долину.
Волож частично расплачивается с руководящим персоналом Яндекса акциями. Все остальные сотрудники также получают премии за хорошую работу ценными бумагами. При этом Волож, в отличие от руководителей других российских IT-концернов, стремится придать своей компании урбанистический, современный и немного небрежный вид: в окрестностях головного офиса Яндекса, расположенного в самом центре Москвы, возник целый квартал с множеством баров и кафе. Работать в Яндексе — престижно и круто. А вскоре завершатся работы по строительству новой, намного более крупной и современной штаб-квартиры концерна с террасой на крыше и бассейном, посещать который в определенное время смогут не только сотрудники, но и обычные граждане.
Несмотря на не слишком хорошие показатели этой весны, связанные с продлившимся несколько недель локдауном (особенно пострадали такие направления Яндекса, как реклама и такси), Волож намерен уже в скором времени серьезно расширить концерн. Недавно было объявлено о переговорах Яндекса с руководством успешного российского онлайн-банка «Тинькофф» о покупке последнего за 5,5 миллиарда долларов. Если эта сделка действительно состоится, Яндекс, помимо прочего, превратится еще и в банк. Тогда он сможет обеспечивать все финансовые операции своих клиентов и даже давать им по мере необходимости кредиты на онлайн-покупки.
До весны этого года у Яндекса был другой финансовый партнер — Сбербанк, крупнейший российский банк с государственным участием. Как говорил глава Сбербанка Герман Греф, совместное предприятие должно было превратиться в «российский Amazon». Однако когда стало понятно, что в других отраслях две компании все больше и больше конкурируют, было принято решение о разделении активов. Сбербанк недавно помпезно представил результаты собственного ребрендинга, превратившись в Сбер. Это должно подчеркивать, что теперь Сбер — «больше, чем просто банк». Он тоже целая цифровая экосистема: на сайте клиенты могут не только получить информацию о финансовых услугах, но и купить бургер с картошкой фри.
Ребрендинг традиционного банка стал вызовом в адрес Яндекса, подобно тому, как переговоры последнего с банком «Тинькофф» стали вызовом в адрес Сбера. О них стало известно как раз после его ребрендинга. Кто победит в этой борьбе, пока совершенно не понятно.
Материалы ИноСМИ содержат оценки исключительно зарубежных СМИ и не отражают позицию редакции ИноСМИ.
Подписывайтесь на нас в Twitter и каждый час получайте переводы материалов зарубежных СМИ.В честь чего дают имена поисковым машинам?
http://news.pravda.ru/export.html?/science/2003/10/23/56326.html
Их звучные имена у всех на слуху, но не многие пользователи догадываются об истинном значении этих слов. Что значит Google? Нужно ли бояться Inktomi? Кто и при каких обстоятельствах придумал назвать Яндекс — Яндексом, а Рамблер — Рамблером? Журнал «Инфобизнес» подготовил небольшой экскурс в историю появления и значение названий основных поисковиков.
Google – производное от «гугол», математического термина, обозначающего единицу со ста нулями. Как отмечает сам Google, во всей вселенной нет гугла чего-либо. К счастью для команды Google по связям с общественностью, это название заместило ранее использовавшийся вариант «Backrub» (что-то вроде «притирка»).
Lycos назван в честь Ликозиды, латинского названия для волчьих пауков. В отличие от большинства пауков, которые пассивно ждут добычу в паутине, волчьи пауки активно охотятся за своей жертвой. (Адаптированная для России версия: поисковик назван в честь собаки-космонавта Лайки — прим. Вокруг Новостей).
Yahoo! был запущен как «ключ к Всемирной паутине от Джерри» по имени соучредителя сервиса Джерри Янга (Jerry Yang). Само слово Yahoo! – это акроним, означающий «Yet Another Hierarchical Officious Oracle» («Еще один неофициальный прорицатель»), но Янг и второй соучредитель Давид Фило (David Filo), видимо, посмотрев слово в словаре, настаивают на следующей расшифровке Yahoo! – «грубый, безыскусный, неотесанный». Сегодня Янг и Фило называют себя «Chief Yahoo» («Главный Yahoo»).
Апорт! был назван так в 1995 году Сергеем Королевым, в то время генеральным директором компании «Агама», где разрабатывался сам поисковый движок. Название в расшифровке не нуждается. Впрочем, со временем прежнего симпатичного песика, быстро несущего палку, заменили более абстрактные символы, но название уцелело.
Rambler – пример заимствования слов чужого языка. Англо-русский словарь Лингво дает перевод «праздношатающийся; бродяга». Есть и другое значение – «вьющаяся роза; ползучее растение».
Яндекс представляет оригинальный гибрид, ни в русском ни в английском языке ничего не обозначающий. Елена Колмановская, главный редактор Яндекс, поясняет, что «придумал слово „Яндекс“ отец-основоположник нашего поиска, ныне технический директор компании „Яндекс“, Илья Сегалович. „Яndex“ означает „Языковой index“, или, если по-английски, „Yandex“ — „Yet Another indexer“. За годы публичного существования Яndex возникли и другие толкования. Например, если в слове „Index“ перевести с английского первую букву („I“ — „Я“), получится „Яndex“.
Другое толкование предлагает Аркадий Волож, генеральный директор компании:
„Это название (“Яндекс» – «Yet Another Indexer») придумал Илья Сегалович (главный разработчик «Яндекса») по аналогии с продуктами Unix (например, YACC – Yet Another C Compiler). А мне понравилась русская транскрипция. «Яндекс» означает «языковый индекс»: буква «я» – очень русская буква. Это индексирование с русской спецификой. А потом придумалось много других объяснений, например: I – это «я» по-русски. Есть еще вариант: ЯНЬдекс и ИНЬдекс (INdex / YANdex) – инь-янь. Исследования на эту тему продолжаются.«
Интересное о Yandex — Symeon Metafrast (Logofet) — ЖЖ
Яndex
Слово «Яndex» придумал за несколько лет до этого один из основных и старейших разработчиков поискового механизма. «Яndex» означает «Языковой index», или, если по-английски, «Yandex» — «Yet Another indexer». За 4 года публичного существования Яndex возникли и другие толкования. Например, если в слове «Index» перевести с английского первую букву («I» — «Я»), получится «Яndex».
Следует уточнить, что обычно стартовая страница сайта называется INDEX (index.html, index.php … в зависимости от языка на котором выполнен сайт).
Продам вантуз и пассатижи и срочно куплю горные лыжи рвану с вершины, что к богу ближе!
Яндекс появился до yandex.ru. Слово Яндекс придумали в 1993 году, а публично оно было произнесено в 1996 году и означало тогда не компанию и не поисковую машину, а ряд программных продуктов — например, морфологическую приставку к поисковой системе Altavista. com.
23 сентября 1997 года о www.yandex.ru знал десяток человек. В 2007 году Яндексом стали регулярно пользоваться больше 10 миллионов .
Яндекс стал отдельной компанией в 2000 году, а до этого был подразделением компании CompTek.
Все 10 человек, которые работали в Яндексе в 1997 году, работают в нем и сегодня.
Первые два сервера Яндекса стояли под ногами у первого сисадмина. Третий сервер под ноги не поместился, пришлось переехать на хостинг в МТУ. В 2000 году Яндекс построил первую собственную серверную, и с тех пор все сервера находятся в собственных дата-центрах.
Первые яндексовые компьютеры называли буквами старого русского алфавита – «аз», «буки», «веди» и т.д. В рабочие моменты это звучало так: «земля упала», «на добре кончилось место». Потом русский алфавит кончился, в течение недели шла дискуссия, какой алфавит будет следующим. Выбрали армянский.
При разработке первого дизайна главной страницы Яндекса было непонятно, чем ее украсить, кроме поисковой строки. Придумали Сказки и Числа. Логотип Яндекса был нарисован под углом, и мы получали письма: «Неужели не могли бумажку в сканер ровно положить?».
Только 10% пользователей из числа вводящих в поисковую строку «Яндекс» запросы со словом «любовь» интересуются отношениями между людьми. Об этом говорится в пресс-релизе «Яндекса», приуроченном ко Дню святого Валентина.
Когда я ищу что-то в Яндексе и не нахожу, Яндекс меняет свой слоган «Найдется всё» на «Найдется все со временем»)))
Слоган «Найдётся всё» придумали в 2000 году. В этом же году Яндекс запустил первую рекламу интернет-сайта на российском телевидении.
Попробуйте ввести в яндексе цвет лягушки в обмороке, и Вы увидите, как на самом деле выглядит этот цвет) И вообще появится барабан с целой кучей разных цветов. Есть даже цвет электрика, кстати. Он такой близкий к бледно-синему.
По исследованиям яндекса мужчины в интернете чаще интересуются компьютерами и гаджетами, а женщины — психологией, отношениями, здоровьем и детьми!
Мужчины делают ошибки чаще женщин.
Запросы мужчин короче женских ) Ну это и в жизни проявляется)
За последний год в Интеренет стало выходить на 10 процентов больше людей! Процент немаленький!
Чаще всего интернет-пользователи ищут социальные сети. Кстати, у меня есть не один знакомый, который заходит в одноклассники через Яндекс. И объяснить, что нужно вводить адрес в специальном окошке, я не могу)))
Использование IndexedDB — Интерфейсы веб API
IndexedDB — это способ постоянного хранения данных внутри клиентского браузера, другими словами это NOSQL хранилище на стороне клиента. Что позволяет создавать веб-приложения с богатыми возможностями обращения к данным независимо от доступности сети, ваши приложения могут работать как онлайн, так и офлайн.
Это руководство по использованию асинхронного API для IndexedDB. Если вы не знакомы с IndexedDB, то обратитесь для начала к документу Basic Concepts About IndexedDB. .
Некоторые части документа не переведены, в основном это повсеместно принятые в программировании рекомендации, такие как обработка ошибок или что-то очевидное. Тем не менее вы можете/должны продолжить перевод. Главная цель перевода — понять основные концепции IndexedDB, обратить внимание на важные нюансы, прокомментировать исходный код и может быть добавить примеры.
Справочную документацию по IndexedDB API вы найдёте в документе IndexedDB. В нем описаны типы объектов, используемых в IndexedDB, а также синхронный и асинхронный API.
Обычная последовательность шагов при работе с IndexedDB :
- Открыть базу данных.
- Создать хранилище объектов в базе данных, над которой будут выполняться наши операции.
- Запустить транзакцию и выдать запрос на выполнение какой-либо операции с базой данных, например, добавление или извлечение данных.
Ждать завершения операции, обрабатывая событие DOM, на которое должен быть установлен наш обработчик.
Сделать что-то с результатами (которые могут быть найдены в возвращаемом по нашему запросу объекте ).
Теперь, получив общее представление, переходим к более конкретным деталям.
Так как спецификация пока ещё находится в процессе разработки, то текущие реализации IndexedDB отличаются у различных браузеров и могут содержать имена объектов, включающие в себя префиксы браузеров. Однако, как только стандарт будет принят, префиксы будут удалены. К настоящему моменту префиксы уже удалены в реализациях IndexedDB в Internet Explorer 10, Firefox 16 и Chrome 24. Браузеры, построенные на базе Gecko пока ещё используют префикс moz,
а браузеры на базе движка webkit
используют префикс webkit.
Использование экспериментальной версии IndexedDB
Для того, чтобы протестировать ваше веб-приложение на браузерах, которые пока ещё не отказались от префикса, можно воспользоваться следующим кодом:
window.indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
window.IDBTransaction = window.IDBTransaction || window.webkitIDBTransaction || window.msIDBTransaction;
window. IDBKeyRange = window.IDBKeyRange || window.webkitIDBKeyRange || window.msIDBKeyRange;
Имейте в виду, что реализации, в которых всё ещё используются префиксы, могут содержать ошибки, быть неполными или следовать устаревшей спецификации. Поэтому их не рекомендуется использовать в ваших рабочих проектах. Предпочтительнее отказаться от таких браузеров, чем получать от них ошибки:
if (!window.indexedDB) {
window.alert("Ваш браузер не поддерживает стабильную версию IndexedDB. Такие-то функции будут недоступны");
}
Открытие базы данных
Как-то так:
var request = window.indexedDB.open("MyTestDatabase", 3);
Видите? Открытие базы данных, подобно любым другим операциям, запускается запросом.
На самом деле запрос открытия базы данных не приводит к немедленному открытию базы или запуску транзакции. Вызов функции open()
вернёт объект IDBOpenDBRequest
, содержащий результат (если успешно) или ошибку, которую вы можете обработать как событие. Большинство других асинхронных функций IndexedDB делает то же самое — возвращает объект IDBRequest
с результатом или ошибкой. Результат функции open всегда возвращает экземпляр объекта IDBDatabase.
Второй параметр метода open — это версия базы данных. Версия определяет схему базы данных — хранилище объектов и их структуру . Если база данных ещё не существует, то она создаётся операцией open,
затем срабатывает триггер события onupgradeneeded
и после этого ваш обработчик этого события создаёт схему базы данных. Если же база данных уже существует, а вы указываете новый номер версии, то сразу же срабатывает триггер события onupgradeneeded,
позволяя вам обновить схему базы данных в обработчике. Подробнее об этом см. в Обновление версии базы данных ниже и на странице IDBFactory.open
(en-US) справочника
Версия базы данных имеет внутреннее представление unsigned long long
number (длинное длинное целое без знака), то есть может принимать очень большие целые значения. Имейте в виду также, что нет смысла использовать в качестве версии базы данных значение с плавающей точкой (float), потому что оно будет сконвертировано в ближайшее меньшее целое. В результате неожиданно может не запуститься транзакция или сработать триггер события upgradeneeded
. Например, не используйте значение 2.4 как версию базы данных:
var request = indexedDB.open("MyTestDatabase", 2.4);
Установка обработчиков
Первое, что понадобится сделать практически со всеми запросами, которые вы создаёте — это добавить обработчики событий успеха и ошибки:
request.onerror = function(event) {
};
request.onsuccess = function(event) {
};
Какая из двух функций - onsuccess()
или onerror()
— должна быть вызвана? Если всё в порядке — то инициируется событие успеха (это событие DOM, свойство type которого выставлено в "success"
) с request
в качестве target
. Это вызывает запуск функции onsuccess()
объекта request
с событием успеха в качестве аргумента. В противном случае, если возникают какие-то проблемы, то происходит событие ошибки (то есть событие DOM, свойство type
которого установлено в "error"
) . Это приводит к запуску функции
с событием ошибки в качестве аргумента.onerror()
IndexedDB API разработан так, чтобы минимизировать необходимость обработки ошибок, поэтому скорее всего вы не встретите много событий ошибки запроса (по крайней мере если вы будете использовать этот API!). Однако при открытии базы данных есть несколько общих условий, которые генерируют события ошибок. Наиболее вероятной проблемой является запрет вашему веб-приложению на создание базы данных, установленный пользователем в браузере. Одной из основных целей разработки IndexedDB — это обеспечение возможности сохранения больших объёмов данных для использования офлайн. (Чтобы узнать, сколько памяти вы можете использовать в разных браузерах, обратитесь к Ограничениям памяти).
Конечно же, браузеры стремятся не позволить назойливым рекламным сетям или вредоносным сайтам засорять ваш компьютер. Поэтому при первой попытке любого веб-приложения открыть хранилище IndexedDB, браузер запрашивает разрешение пользователя. Пользователь может выбрать — то ли разрешить, то ли запретить доступ. Кроме этого, в приватных режимах браузеров (частный просмотр для Firefox и режим инкогнито для Chrome), IndexedDB полностью запрещена для использования. Так как цель приватных режимов — не оставлять следов, то открытие базы данных невозможно в таких режимах.
А теперь предположим, что пользователь разрешил вашему запросу создать базу данных и состоялось событие успеха, запустившее обработчик события успеха. Что дальше? Так как ваш запрос был сгенерирован с вызовом метода indexedDB.open(), то
request.result
является экземпляром объекта IDBDatabase
и вы определённо захотите сохранить его для будущего использования. Ваш код может выглядеть примерно так:
var db;
var request = indexedDB. open("MyTestDatabase");
request.onerror = function(event) {
alert("Почему вы не позволяете моему веб-приложению использовать IndexedDB?!");
};
request.onsuccess = function(event) {
db = event.target.result;
};
Обработка ошибок
Как уже упоминалось выше, события ошибки всплывают. Событие ошибки нацелено (в фазе перехвата) на запрос, который сгенерировал ошибку, затем событие всплывает до уровня транзакции и наконец достигает уровня объекта базы данных. Если вы хотите избежать установки отдельных обработчиков на каждый запрос, то вы можете вместо этого установить один единственный обработчик на объект базы данных, например так:
db.onerror = function(event) {
alert("Database error: " + event.target.errorCode);
};
Одной из возможных ошибок при открытии базы данных является VER_ERR.
Она сигнализирует о том, что версия базы данных, сохранённая на диске, больше, чем версия, которую вы пытаетесь открыть. Такая ошибка должна быть в обязательном порядке обработана обработчиком ошибок.
Создание или обновление версии базы данных
Когда вы создаёте новую базу данных или увеличиваете номер версии существующей базы данных (задавая больший номер версии, чем тот номер, который был вами указан при Opening a database) запускается событие onupgradeneeded
. В обработчике этого события вы должны создать хранилище объектов, необходимое для этой версии базы данных:
request.onupgradeneeded = function(event) {
var db = event.target.result;
var objectStore = db.createObjectStore("name", { keyPath: "myKey" });
};
Версия числа без знака с длиной long long, может быть очень большим.
Так же вы не можете использовать float, его значение будет округлено до ближайшего целого, со всеми вытекающими из этого ошибками:
var request = indexedDB.open("MyTestDatabase", 2.4);
Когда вы увеличиваете номер версии, будет инициировано событие onupgradeneeded. В этот момент БД будет хранить старые объекты. Но для всякого объекта прошлой версии стоит создать новый объект, совместимый с новой версией. Если вам необходимо исправить существующий объект в БД (например, для изменения keyPath), то вы можете удалить объект и создать его вновь с новыми параметрами (помните, что удаление стирает информацию, так что не забывайте сохранять то, что вам нужно).
WebKit поддерживает текущую версию спецификации в Google Chrome 23 и старше. Так что там нет события indexedDB.open(name, version).onupgradeneeded. Однако, вы можете ознакомиться с инструкцией о том, что делать со старым Webkit.
Структура базы данных
Now to structure the database. IndexedDB uses object stores rather than tables, and a single database can contain any number of object stores. Whenever a value is stored in an object store, it is associated with a key. There are several different ways that a key can be supplied depending on whether the object store uses a key path or a key generator.
The following table shows the different ways the keys are supplied.
Key Path | Key Generator | Description |
---|---|---|
No | No | This object store can hold any kind of value, even primitive values like numbers and strings. You must supply a separate key argument whenever you want to add a new value. |
Yes | No | This object store can only hold JavaScript objects. The objects must have a property with the same name as the key path. |
No | Yes | This object store can hold any kind of value. The key is generated for you automatically, or you can supply a separate key argument if you want to use a specific key. |
Yes | Yes | This object store can only hold JavaScript objects. Usually a key is generated and the value of the generated key is stored in the object in a property with the same name as the key path. However, if such a property already exists, the value of that property is used as key rather than generating a new key. |
You can also create indices on any object store, provided the object store holds objects, not primitives. An index lets you look up the values stored in an object store using the value of a property of the stored object, rather than the object’s key.
Additionally, indexes have the ability to enforce simple constraints on the stored data. By setting the unique flag when creating the index, the index ensures that no two objects are stored with both having the same value for the index’s key path. So, for example, if you have an object store which holds a set of people, and you want to ensure that no two people have the same email address, you can use an index with the unique flag set to enforce this.
That may sound confusing, but this simple example should illustrate the concepts:
const customerData = [
{ ssn: "444-44-4444", name: "Bill", age: 35, email: "bill@company. com" },
{ ssn: "555-55-5555", name: "Donna", age: 32, email: "[email protected]" }
];
const dbName = "the_name";
var request = indexedDB.open(dbName, 2);
request.onerror = function(event) {
};
request.onupgradeneeded = function(event) {
var db = event.target.result;
var objectStore = db.createObjectStore("customers", { keyPath: "ssn" });
objectStore.createIndex("name", "name", { unique: false });
objectStore.createIndex("email", "email", { unique: true });
for (var i in customerData) {
objectStore.add(customerData[i]);
}
};
As mentioned previously, onupgradeneeded
is the only place where you can alter the structure of the database. In it, you can create and delete object stores and build and remove indices.
Object stores are created with a single call to createObjectStore()
. The method takes a name of the store, and a parameter object. Even though the parameter object is optional, it is very important, because it lets you define important optional properties and refine the type of object store you want to create. In our case, we’ve asked for an object store named «customers» and defined a keyPath that is the property that makes an individual object in the store unique. That property in this example is «ssn» since a social security number is guaranteed to be unique. «ssn» must be present on every object that is stored in the objectStore.
We’ve also asked for an index named «name» that looks at the name
property of the stored objects. As with createObjectStore()
, createIndex()
takes an optional options
object that refines the type of index that you want to create. Adding objects that don’t have a name
property still succeeds, but the object won’t appear in the «name» index.
We can now retrieve the stored customer objects using their ssn
from the object store directly, or using their name by using the index. To learn how this is done, see the section on using an index.
Before you can do anything with your new database, you need to start a transaction. Transactions come from the database object, and you have to specify which object stores you want the transaction to span. Also, you need to decide if you’re going to make changes to the database or if you just need to read from it. Although transactions have three modes (read-only, read/write, and versionchange), you’re better off using a read-only transaction when you can, because they can run concurrently
Adding data to the database
If you’ve just created a database, then you probably want to write to it. Here’s what that looks like:
var transaction = db.transaction(["customers"], "readwrite");
The transaction()
function takes two arguments (though one is optional) and returns a transaction object. The first argument is a list of object stores that the transaction will span. You can pass an empty array if you want the transaction to span all object stores, but don’t do it because the spec says an empty array should generate an InvalidAccessError. If you don’t specify anything for the second argument, you get a read-only transaction. Since you want to write to it here you need to pass the "readwrite"
flag.
Now that you have a transaction you need to understand its lifetime. Transactions are tied very closely to the event loop. If you make a transaction and return to the event loop without using it then the transaction will become inactive. The only way to keep the transaction active is to make a request on it. When the request is finished you’ll get a DOM event and, assuming that the request succeeded, you’ll have another opportunity to extend the transaction during that callback. If you return to the event loop without extending the transaction then it will become inactive, and so on. As long as there are pending requests the transaction remains active. Transaction lifetimes are really very simple but it might take a little time to get used to. A few more examples will help, too. If you start seeing TRANSACTION_INACTIVE_ERR
error codes then you’ve messed something up.
Transactions can receive DOM events of three different types: error
, abort
, and complete
. We’ve talked about the way that error
events bubble, so a transaction receives error events from any requests that are generated from it. A more subtle point here is that the default behavior of an error is to abort the transaction in which it occurred. Unless you handle the error by calling preventDefault()
on the error event, the entire transaction is rolled back. This design forces you to think about and handle errors, but you can always add a catchall error handler to the database if fine grained error handling is too cumbersome. If you don’t handle an error event or if you call abort()
on the transaction, then the transaction is rolled back and an abort
event is fired on the transaction. Otherwise, after all pending requests have completed, you’ll get a complete
event. If you’re doing lots of database operations, then tracking the transaction rather than individual requests can certainly aide your sanity.
Now that you have a transaction, you’ll need to get the object store from it. Transactions only let you have an object store that you specified when creating the transaction. Then you can add all the data you need.
transaction.oncomplete = function(event) {
alert("All done!");
};
transaction.onerror = function(event) {
};
var objectStore = transaction.objectStore("customers");
for (var i in customerData) {
var request = objectStore.add(customerData[i]);
request.onsuccess = function(event) {
};
}
The result
of a request generated from a call to add()
is the key of the value that was added. So in this case, it should equal the ssn
property of the object that was added, since the object store uses the ssn
property for the key path. Note that the add()
function requires that no object already be in the database with the same key. If you’re trying to modify an existing entry, or you don’t care if one exists already, use the put()
function.
Removing data is very similar:
var request = db.transaction(["customers"], "readwrite")
.objectStore("customers")
.delete("444-44-4444");
request.onsuccess = function(event) {
};
Now that the database has some info in it, you can retrieve it in several ways. First, the simple get()
. You need to provide the key to retrieve the value, like so:
var transaction = db.transaction(["customers"]);
var objectStore = transaction.objectStore("customers");
var request = objectStore.get("444-44-4444");
request.onerror = function(event) {
};
request.onsuccess = function(event) {
alert("Name for SSN 444-44-4444 is " + request.result.name);
};
That’s a lot of code for a «simple» retrieval. Here’s how you can shorten it up a bit, assuming that you handle errors at the database level:
db.transaction("customers").objectStore("customers").get("444-44-4444").onsuccess = function(event) {
alert("Name for SSN 444-44-4444 is " + event.target.result.name);
};
See how this works? Since there’s only one object store, you can avoid passing a list of object stores you need in your transaction and just pass the name as a string. Also, you’re only reading from the database, so you don’t need a "readwrite"
transaction. Calling transaction()
with no mode specified gives you a "readonly"
transaction. Another subtlety here is that you don’t actually save the request object to a variable. Since the DOM event has the request as its target you can use the event to get to the result
property. Easy, right?!
Using get()
requires that you know which key you want to retrieve. If you want to step through all the values in your object store, then you can use a cursor. Here’s what it looks like:
var objectStore = db.transaction("customers").objectStore("customers");
objectStore.openCursor().onsuccess = function(event) {
var cursor = event.target.result;
if (cursor) {
alert("Name for SSN " + cursor.key + " is " + cursor.value.name);
cursor.continue();
}
else {
alert("No more entries!");
}
};
The openCursor()
function takes several arguments. First, you can limit the range of items that are retrieved by using a key range object that we’ll get to in a minute. Second, you can specify the direction that you want to iterate. In the above example, we’re iterating over all objects in ascending order. The success callback for cursors is a little special. The cursor object itself is the result
of the request (above we’re using the shorthand, so it’s event.target.result
). Then the actual key and value can be found on the key
and value
properties of the cursor object. If you want to keep going, then you have to call continue()
on the cursor. When you’ve reached the end of the data (or if there were no entries that matched your openCursor()
request) you still get a success callback, but the result
property is undefined
.
One common pattern with cursors is to retrieve all objects in an object store and add them to an array, like this:
var customers = [];
objectStore.openCursor().onsuccess = function(event) {
var cursor = event.target.result;
if (cursor) {
customers.push(cursor.value);
cursor.continue();
}
else {
alert("Got all customers: " + customers);
}
};
Warning: The following function is not part of the IndexedDB standard!
Mozilla has also implemented getAll()
to handle this case. It isn’t part of the IndexedDB standard, so it may disappear in the future. We’ve included it because we think it’s useful. The following code does precisely the same thing as above:
objectStore.getAll().onsuccess = function(event) {
alert("Got all customers: " + event.target.result);
};
There is a performance cost associated with looking at the value
property of a cursor, because the object is created lazily. When you use getAll()
, Gecko must create all the objects at once. If you’re just interested in looking at each of the keys, for instance, it is much more efficient to use a cursor than to use getAll()
. If you’re trying to get an array of all the objects in an object store, though, use getAll()
.
Using an index
Storing customer data using the SSN as a key is logical since the SSN uniquely identifies an individual. (Whether this is a good idea for privacy is a different question, outside the scope of this article.) If you need to look up a customer by name, however, you’ll need to iterate over every SSN in the database until you find the right one. Searching in this fashion would be very slow, so instead you can use an index.
var index = objectStore.index("name");
index.get("Donna").onsuccess = function(event) {
alert("Donna's SSN is " + event.target.result.ssn);
};
The «name» cursor isn’t unique, so there could be more than one entry with the name
set to "Donna"
. In that case you always get the one with the lowest key value.
If you need to access all the entries with a given name
you can use a cursor. You can open two different types of cursors on indexes. A normal cursor maps the index property to the object in the object store. A key cursor maps the index property to the key used to store the object in the object store. The differences are illustrated here:
index.openCursor().onsuccess = function(event) {
var cursor = event.target.result;
if (cursor) {
alert("Name: " + cursor.key + ", SSN: " + cursor.value.ssn + ", email: " + cursor.value.email);
cursor.continue();
}
};
index.openKeyCursor().onsuccess = function(event) {
var cursor = event.target.result;
if (cursor) {
alert("Name: " + cursor.key + ", SSN: " + cursor.value);
cursor.continue();
}
};
Specifying the range and direction of cursors
If you would like to limit the range of values you see in a cursor, you can use a key range object and pass it as the first argument to openCursor()
or openKeyCursor()
. You can make a key range that only allows a single key, or one the has a lower or upper bound, or one that has both a lower and upper bound. The bound may be «closed» (i.e., the key range includes the given value) or «open» (i.e., the key range does not include the given value). Here’s how it works:
var singleKeyRange = IDBKeyRange.only("Donna");
var lowerBoundKeyRange = IDBKeyRange.lowerBound("Bill");
var lowerBoundOpenKeyRange = IDBKeyRange.lowerBound("Bill", true);
var upperBoundOpenKeyRange = IDBKeyRange.upperBound("Donna", true);
var boundKeyRange = IDBKeyRange.bound("Bill", "Donna", false, true);
index.openCursor(boundKeyRange).onsuccess = function(event) {
var cursor = event.target.result;
if (cursor) {
cursor.continue();
}
};
Sometimes you may want to iterate in descending order rather than in ascending order (the default direction for all cursors). Switching direction is accomplished by passing prev
to the openCursor()
function:
objectStore.openCursor(null, IDBCursor.prev).onsuccess = function(event) {
var cursor = event.target.result;
if (cursor) {
cursor.continue();
}
};
Since the «name» index isn’t unique, there might be multiple entries where name
is the same. Note that such a situation cannot occur with object stores since the key must always be unique. If you wish to filter out duplicates during cursor iteration over indexes, you can pass nextunique
(or prevunique
if you’re going backwards) as the direction parameter. When nextunique
or prevunique
is used, the entry with the lowest key is always the one returned.
index.openKeyCursor(null, IDBCursor.nextunique).onsuccess = function(event) {
var cursor = event.target.result;
if (cursor) {
cursor.continue();
}
};
When your web app changes in such a way that a version change is required for your database, you need to consider what happens if the user has the old version of your app open in one tab and then loads the new version of your app in another. When you call open()
with a greater version than the actual version of the database, all other open databases must explicitly acknowledge the request before you can start making changes to the database. Here’s how it works:
var openReq = mozIndexedDB.open("MyTestDatabase", 2);
openReq.onblocked = function(event) {
alert("Please close all other tabs with this site open!");
};
openReq.onupgradeneeded = function(event) {
db.createObjectStore();
useDatabase(db);
}
openReq.onsuccess = function(event) {
var db = event.target.result;
useDatabase(db);
return;
}
function useDatabase(db) {
db.onversionchange = function(event) {
db.close();
alert("A new version of this page is ready. Please reload!");
};
}
IndexedDB uses the same-origin principle, which means that it ties the store to the origin of the site that creates it (typically, this is the site domain or subdomain), so it cannot be accessed by any other origin.
It’s important to note that IndexedDB doesn’t work for content loaded into a frame from another site (either <frame> (en-US) or <iframe> (en-US). This is a security and privacy measure and can be considered analogous the blocking of 3rd-party cookies. For more details, see баг 595307.
When the browser shuts down (e.g., when the user selects Exit or clicks the Close button), any pending IndexedDB transactions are (silently) aborted — they will not complete, and they will not trigger the error handler. Since the user can exit the browser at any time, this means that you cannot rely upon any particular transaction to complete or to know that it did not complete. There are several implications of this behavior.
First, you should take care to always leave your database in a consistent state at the end of every transaction. For example, suppose that you are using IndexedDB to store a list of items that you allow the user to edit. You save the list after the edit by clearing the object store and then writing out the new list. If you clear the object store in one transaction and write the new list in another transaction, there is a danger that the browser will close after the clear but before the write, leaving you with an empty database. To avoid this, you should combine the clear and the write into a single transaction.
Second, you should never tie database transactions to unload events. If the unload event is triggered by the browser closing, any transactions created in the unload event handler will never complete. An intuitive approach to maintaining some information across browser sessions is to read it from the database when the browser (or a particular page) is opened, update it as the user interacts with the browser, and then save it to the database when the browser (or page) closes. However, this will not work. The database transactions will be created in the unload event handler, but because they are asynchronous they will be aborted before they can execute.
In fact, there is no way to guarantee that IndexedDB transactions will complete, even with normal browser shutdown. See баг 870645.
HTML Content
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<h2>IndexedDB Demo: storing blobs, e-publication example</h2>
<div>
<p>
Works and tested with:
</p>
<div>
</div>
</div>
<div>
</div>
<form>
<table>
<tbody>
<tr>
<td>
<label for="pub-title">
Title:
</label>
</td>
<td>
<input type="text" name="pub-title" />
</td>
</tr>
<tr>
<td>
<label for="pub-biblioid">
Bibliographic ID:<br/>
<span>(ISBN, ISSN, etc.)</span>
</label>
</td>
<td>
<input type="text" name="pub-biblioid"/>
</td>
</tr>
<tr>
<td>
<label for="pub-year">
Year:
</label>
</td>
<td>
<input type="number" name="pub-year" />
</td>
</tr>
</tbody>
<tbody>
<tr>
<td>
<label for="pub-file">
File image:
</label>
</td>
<td>
<input type="file"/>
</td>
</tr>
<tr>
<td>
<label for="pub-file-url">
Online-file image URL:<br/>
<span>(same origin URL)</span>
</label>
</td>
<td>
<input type="text" name="pub-file-url"/>
</td>
</tr>
</tbody>
</table>
<div>
<input type="button" value="Add Publication" />
<input type="reset"/>
</div>
</form>
<form>
<table>
<tbody>
<tr>
<td>
<label for="pub-biblioid-to-delete">
Bibliographic ID:<br/>
<span>(ISBN, ISSN, etc.)</span>
</label>
</td>
<td>
<input type="text"
name="pub-biblioid-to-delete" />
</td>
</tr>
<tr>
<td>
<label for="key-to-delete">
Key:<br/>
<span>(for example 1, 2, 3, etc.)</span>
</label>
</td>
<td>
<input type="text"
name="key-to-delete" />
</td>
</tr>
</tbody>
</table>
<div>
<input type="button" value="Delete Publication" />
<input type="button"
value="Clear the whole store" />
</div>
</form>
<form>
<div>
<input type="button"
value="List database content" />
</div>
</form>
<div>
<div>
</div>
<div>
</div>
<ul>
</ul>
</div>
CSS Content
body {
font-size: 0.8em;
font-family: Sans-Serif;
}
form {
background-color: #cccccc;
border-radius: 0.3em;
display: inline-block;
margin-bottom: 0.5em;
padding: 1em;
}
table {
border-collapse: collapse;
}
input {
padding: 0.3em;
border-color: #cccccc;
border-radius: 0.3em;
}
.required:after {
content: "*";
color: red;
}
.button-pane {
margin-top: 1em;
}
#pub-viewer {
float: right;
width: 48%;
height: 20em;
border: solid #d092ff 0.1em;
}
#pub-viewer iframe {
width: 100%;
height: 100%;
}
#pub-list {
width: 46%;
background-color: #eeeeee;
border-radius: 0.3em;
}
#pub-list li {
padding-top: 0.5em;
padding-bottom: 0.5em;
padding-right: 0.5em;
}
#msg {
margin-bottom: 1em;
}
.action-success {
padding: 0.5em;
color: #00d21e;
background-color: #eeeeee;
border-radius: 0.2em;
}
.action-failure {
padding: 0.5em;
color: #ff1408;
background-color: #eeeeee;
border-radius: 0.2em;
}
.note {
font-size: smaller;
}
.destructive {
background-color: orange;
}
.destructive:hover {
background-color: #ff8000;
}
.destructive:active {
background-color: red;
}
JavaScript Content
(function () {
var COMPAT_ENVS = [
['Firefox', ">= 16.0"],
['Google Chrome',
">= 24.0 (you may need to get Google Chrome Canary), NO Blob storage support"]
];
var compat = $('#compat');
compat.empty();
compat.append('<ul></ul>');
COMPAT_ENVS.forEach(function(val, idx, array) {
$('#compat-list').append('<li>' + val[0] + ': ' + val[1] + '</li>');
});
const DB_NAME = 'mdn-demo-indexeddb-epublications';
const DB_VERSION = 1;
const DB_STORE_NAME = 'publications';
var db;
var current_view_pub_key;
function openDb() {
console.log("openDb ...");
var req = indexedDB.open(DB_NAME, DB_VERSION);
req.onsuccess = function (evt) {
db = this.result;
console.log("openDb DONE");
};
req.onerror = function (evt) {
console.error("openDb:", evt.target.errorCode);
};
req.onupgradeneeded = function (evt) {
console.log("openDb.onupgradeneeded");
var thisDB = evt.target.result;
if (!thisDB.objectStoreNames.contains(DB_STORE_NAME)) {
var store = thisDB.createObjectStore(
DB_STORE_NAME, { keyPath: 'id', autoIncrement: true });
store.createIndex('biblioid', 'biblioid', { unique: true });
store.createIndex('title', 'title', { unique: false });
store.createIndex('year', 'year', { unique: false });
}
};
}
function getObjectStore(store_name, mode) {
var tx = db.transaction(store_name, mode);
return tx.objectStore(store_name);
}
function clearObjectStore(store_name) {
var store = getObjectStore(DB_STORE_NAME, 'readwrite');
var req = store.clear();
req.onsuccess = function(evt) {
displayActionSuccess("Store cleared");
displayPubList(store);
};
req.onerror = function (evt) {
console.error("clearObjectStore:", evt.target.errorCode);
displayActionFailure(this.error);
};
}
function getBlob(key, store, success_callback) {
var req = store.get(key);
req.onsuccess = function(evt) {
var value = evt.target.result;
if (value)
success_callback(value.blob);
};
}
function displayPubList(store) {
console.log("displayPubList");
if (typeof store == 'undefined')
store = getObjectStore(DB_STORE_NAME, 'readonly');
var pub_msg = $('#pub-msg');
pub_msg.empty();
var pub_list = $('#pub-list');
pub_list.empty();
newViewerFrame();
var req;
req = store.count();
req.onsuccess = function(evt) {
pub_msg.append('<p>There are <strong>' + evt.target.result +
'</strong> record(s) in the object store.</p>');
};
req.onerror = function(evt) {
console.error("add error", this.error);
displayActionFailure(this.error);
};
var i = 0;
req = store.openCursor();
req.onsuccess = function(evt) {
var cursor = evt.target.result;
if (cursor) {
console.log("displayPubList cursor:", cursor);
req = store.get(cursor.key);
req.onsuccess = function (evt) {
var value = evt.target.result;
var list_item = $('<li>' +
'[' + cursor.key + '] ' +
'(biblioid: ' + value.biblioid + ') ' +
value.title +
'</li>');
if (value.year != null)
list_item.append(' - ' + value.year);
if (value.hasOwnProperty('blob') &&
typeof value.blob != 'undefined') {
var link = $('<a href="' + cursor.key + '">File</a>');
link.on('click', function() { return false; });
link.on('mouseenter', function(evt) {
setInViewer(evt.target.getAttribute('href')); });
list_item.append(' / ');
list_item.append(link);
} else {
list_item.append(" / No attached file");
}
pub_list.append(list_item);
};
cursor.continue();
i++;
} else {
console.log("No more entries");
}
};
}
function newViewerFrame() {
var viewer = $('#pub-viewer');
viewer.empty();
var iframe = $('<iframe />');
viewer.append(iframe);
return iframe;
}
function setInViewer(key) {
console.log("setInViewer:", arguments);
key = Number(key);
if (key == current_view_pub_key)
return;
current_view_pub_key = key;
var store = getObjectStore(DB_STORE_NAME, 'readonly');
getBlob(key, store, function(blob) {
console.log("setInViewer blob:", blob);
var iframe = newViewerFrame();
if (blob.type == 'text/html') {
var reader = new FileReader();
reader.onload = (function(evt) {
var html = evt.target.result;
iframe.load(function() {
$(this).contents().find('html').html(html);
});
});
reader.readAsText(blob);
} else if (blob.type.indexOf('image/') == 0) {
iframe.load(function() {
var img_id = 'image-' + key;
var img = $('<img/>');
$(this).contents().find('body').html(img);
var obj_url = window.URL.createObjectURL(blob);
$(this).contents().find('#' + img_id).attr('src', obj_url);
window.URL.revokeObjectURL(obj_url);
});
} else if (blob.type == 'application/pdf') {
$('*').css('cursor', 'wait');
var obj_url = window.URL.createObjectURL(blob);
iframe.load(function() {
$('*').css('cursor', 'auto');
});
iframe.attr('src', obj_url);
window.URL.revokeObjectURL(obj_url);
} else {
iframe.load(function() {
$(this).contents().find('body').html("No view available");
});
}
});
}
function addPublicationFromUrl(biblioid, title, year, url) {
console.log("addPublicationFromUrl:", arguments);
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'blob';
xhr.onload = function (evt) {
if (xhr.status == 200) {
console.log("Blob retrieved");
var blob = xhr.response;
console.log("Blob:", blob);
addPublication(biblioid, title, year, blob);
} else {
console.error("addPublicationFromUrl error:",
xhr.responseText, xhr.status);
}
};
xhr.send();
}
function addPublication(biblioid, title, year, blob) {
console.log("addPublication arguments:", arguments);
var obj = { biblioid: biblioid, title: title, year: year };
if (typeof blob != 'undefined')
obj.blob = blob;
var store = getObjectStore(DB_STORE_NAME, 'readwrite');
var req;
try {
req = store.add(obj);
} catch (e) {
if (e.name == 'DataCloneError')
displayActionFailure("This engine doesn't know how to clone a Blob, " +
"use Firefox");
throw e;
}
req.onsuccess = function (evt) {
console.log("Insertion in DB successful");
displayActionSuccess();
displayPubList(store);
};
req.onerror = function() {
console.error("addPublication error", this.error);
displayActionFailure(this.error);
};
}
function deletePublicationFromBib(biblioid) {
console.log("deletePublication:", arguments);
var store = getObjectStore(DB_STORE_NAME, 'readwrite');
var req = store.index('biblioid');
req.get(biblioid).onsuccess = function(evt) {
if (typeof evt.target.result == 'undefined') {
displayActionFailure("No matching record found");
return;
}
deletePublication(evt.target.result.id, store);
};
req.onerror = function (evt) {
console.error("deletePublicationFromBib:", evt.target.errorCode);
};
}
function deletePublication(key, store) {
console.log("deletePublication:", arguments);
if (typeof store == 'undefined')
store = getObjectStore(DB_STORE_NAME, 'readwrite');
var req = store.get(key);
req.onsuccess = function(evt) {
var record = evt.target.result;
console.log("record:", record);
if (typeof record == 'undefined') {
displayActionFailure("No matching record found");
return;
}
req = store.delete(key);
req.onsuccess = function(evt) {
console.log("evt:", evt);
console.log("evt.target:", evt.target);
console.log("evt.target.result:", evt.target.result);
console.log("delete successful");
displayActionSuccess("Deletion successful");
displayPubList(store);
};
req.onerror = function (evt) {
console.error("deletePublication:", evt.target.errorCode);
};
};
req.onerror = function (evt) {
console.error("deletePublication:", evt.target.errorCode);
};
}
function displayActionSuccess(msg) {
msg = typeof msg != 'undefined' ? "Success: " + msg : "Success";
$('#msg').html('<span>' + msg + '</span>');
}
function displayActionFailure(msg) {
msg = typeof msg != 'undefined' ? "Failure: " + msg : "Failure";
$('#msg').html('<span>' + msg + '</span>');
}
function resetActionStatus() {
console.log("resetActionStatus ...");
$('#msg').empty();
console.log("resetActionStatus DONE");
}
function addEventListeners() {
console.log("addEventListeners");
$('#register-form-reset').click(function(evt) {
resetActionStatus();
});
$('#add-button').click(function(evt) {
console.log("add ...");
var title = $('#pub-title').val();
var biblioid = $('#pub-biblioid').val();
if (!title || !biblioid) {
displayActionFailure("Required field(s) missing");
return;
}
var year = $('#pub-year').val();
if (year != '') {
if (isNaN(year)) {
displayActionFailure("Invalid year");
return;
}
year = Number(year);
} else {
year = null;
}
var file_input = $('#pub-file');
var selected_file = file_input.get(0).files[0];
console.log("selected_file:", selected_file);
var file_url = $('#pub-file-url').val();
if (selected_file) {
addPublication(biblioid, title, year, selected_file);
} else if (file_url) {
addPublicationFromUrl(biblioid, title, year, file_url);
} else {
addPublication(biblioid, title, year);
}
});
$('#delete-button').click(function(evt) {
console.log("delete ...");
var biblioid = $('#pub-biblioid-to-delete').val();
var key = $('#key-to-delete').val();
if (biblioid != '') {
deletePublicationFromBib(biblioid);
} else if (key != '') {
if (key == '' || isNaN(key)) {
displayActionFailure("Invalid key");
return;
}
key = Number(key);
deletePublication(key);
}
});
$('#clear-store-button').click(function(evt) {
clearObjectStore();
});
var search_button = $('#search-list-button');
search_button.click(function(evt) {
displayPubList();
});
}
openDb();
addEventListeners();
})();
Test the online live demo
If you want to start tinkering with the API, jump in to the reference documentation and checking out the different methods.
Reference
Tutorials
Related articles
Firefox
Is it just me or are you talking in another dimension? | Это мне кажется, или ты сейчас разговариваешь в другом измерении? |
So the kitchen table exists in another dimension Where that already happened? | Но, кухонный стол находится в другом направлении, где это уже случилось. |
It was written by a mad prince, who knew of the nightmare city of R’Lyeh, which fell from the stars and exists beneath the sea, and in another dimension. | Его написал безумный принц, познавший ужасы города Р’льех, упавшего в море с небес и существующего в другом измерении |
In another dimension With voyeuristic intention | В другом измерении с вуайеристским намерением |
The dead live in another space, in another dimension. | Мертвые живут в другом пространстве, в ином измерении. |
A wizard who was pledged to the Red Wizards of Thay from boyhood makes plans in another dimension, and is willing to do anything for anyone who can give him more power. | Волшебник, который с детства был связан клятвой с красными волшебниками Тэя, строит планы в другом измерении и готов сделать все для любого, кто может дать ему больше власти. |
Shredder is hijacked mid-teleport, winds up in another dimension, and meets the alien warlord Krang, who reveals his plans to invade Earth. | Шреддер захвачен в середине телепорта, оказывается в другом измерении и встречается с инопланетным военачальником Крэнгом, который раскрывает свои планы вторжения на Землю. |
Другие результаты | |
There can’t be another dimension with the same organism | Не может быть другого измерения с таким же существом |
What is common in one dimension is frequently rare in another. | Что обычно в одном измерении, часто является редкостью в другом. |
Climate change is another issue of global dimension that requires global action and institution-building. | Изменение климата является еще одной проблемой глобального значения, требующей принятия мер и укрепления институтов на международном уровне. |
Another global dimension of policy in the major developed economies stands in clear relief with respect to the present crisis. | В контексте нынешнего кризиса четко прослеживается еще один глобальный аспект политики ведущих развитых стран. |
It works by bending one dimension over another, and opening a doorway through. | Это получится, если свернуть одно измерение в другое, откроется проход. Портал. |
But the disease has another punishing dimension. | Однако у этой болезни есть еще одно тяжкое последствие. |
The more I have thought about the lesson she taught me 45 years ago, the clearer I have seen another, less obvious dimension in what she said: It is “we” who lost the war. | Чем больше я думаю об уроке, который она мне преподала 45 лет назад, тем яснее я вижу второй, менее очевидный смысл ее слов. Войну проиграли «мы». |
Our three-dimensional world lives in a surface embedded in a space with an extra spatial dimension that separates it from another such surface. | Наш трехмерный мир существует на поверхности пространства с дополнительным измерением, которое в свою очередь отделяет его от еще одной подобной поверхности. |
You can pretend like you’re leaping into another dimension. | Вы можете воображать, будто прыгаете в другое измерение. |
You know, guy tried to become a God, so we opened up a portal beneath his quantum-power cube, then Ghost Rider dragged him to another dimension with his hellfire chain. | Ну знаешь, парень пытался стать Богом, поэтому мы открыли портал под его квантовой мощью, потом Призрачный гонщик затащил его в другое измерение с помощью своих адских цепей. |
There can’t be another dimension with the same organism | Не может быть другого измерения с таким же существом |
Surely you appreciate the dangers of moving material from one dimension to another. | Конечно, вы осознаете опасность перемещения вещества из одного измерения в другое. |
The oil company stated they knew another dimension was there but didn’t think drilling into it would be problematic. | Компания заявила, что они знали о существовании другого измерения в этом месте Но они не думали что бурение будет столь опасным. |
Walter was able to open a wormhole into another dimension that essentially shredded all the laws of science. | Уолтер умудрился открыть проход в другую вселенную, что, фактически, сотрясло все известные науке законы. |
To them, time might be another physical dimension. | Для них время может быть другим физическим параметром. |
The fraternity, who silently control the empire, share the belief with the kings, pharaohs and emperors of old that the sphinx was a door to another dimension a gateway to immeasurable power. | Братство, тайно контролирующее империю разделяет веру древних королей, фараонов и императоров что сфинкс был дверью в другое измерение вратами к невероятному могуществу. |
Uh, when I was 13 years old I first had foie gras and it absolutely transported me to another dimension | Когда мне было 13, я впервые попробовала фуа-гра, и это буквально перенесло меня в другое измерение. |
But they drilled again, and tore open a portal into another dimension. | Но они снова бурили и открыли портал в другое измерение. |
Tearing a hole into another dimension is a tragedy that should have never happened. | Открытие дыры в другое измерение — ужасная катастрофа которая не должна была произойти. |
The rise of Cthulu from another dimension brings about 3,000 years of darkness, Tom. | Пробуждение Ктулху из другого измерения сулит нам 3000 годами тьмы, Том. |
You slipped into another dimension thing, right? | Ты проскользнул в другое измерение? |
Now hundreds of creatures from another dimension are spilling out into our reality and wreaking havoc. | теперь тысячи тварей из другого измерения расползаются по миру и сеют хаос. |
It all began when the BP oil company drilled into the ocean floor and ripped open a hole to another dimension. | Все началось с того, как компания ВР пробурила скважину на дне океана, открыв окно в другое измерение |
You’re traveling through another dimension, not only of sight and sound, but of mind. | Вы движетесь в другом измерении. Не в смысле изображения и звука, а сознания. |
and also it has a descending stroke, which is another vertical dimension that I would be interested in establishing. | и у нее есть подстрочный элемент, он является другим вертикальным измерением, которое я хотел бы рассмотреть. |
The short answer is they were murdered by a vanishing banshee made of matter from another dimension. | Вкратце, их убила исчезающая банши, созданная из материи другого измерения. |
In an initial experiment, participants rated another person on the introversion–extroversion personality dimension on the basis of an interview. | В первоначальном эксперименте участники оценивали другого человека по личностному измерению интроверсии–экстраверсии на основе интервью. |
If the size of a document is also considered as another dimension of this space then an extremely efficient indexing system can be created. | Если размер документа также рассматривается как другое измерение этого пространства, то может быть создана чрезвычайно эффективная система индексирования. |
This case illustrates the difficulty in separating procedural from declarative tasks; this adds another dimension to the complexity of anterograde amnesia. | Этот случай иллюстрирует трудность отделения процедурных задач от декларативных; это добавляет еще одно измерение к сложности антероградной амнезии. |
A similar story of Scare Glow coming from another dimension summoned by Skeletor is told in an issue of Marvel’s Star Comics, Masters of the Universe series. | Похожая история страшного свечения, исходящего из другого измерения, вызванного Скелетором, рассказана в выпуске комиксов Marvel Star, серии Masters of the Universe. |
The story features Scare Glow as a character from another dimension who is summoned by Skeletor to use his powers against the Masters. | История показывает пугающее свечение как персонаж из другого измерения, который вызван Скелетором, чтобы использовать свои силы против мастеров. |
After Disney Castle was built in their world, with Mickey its new king, Pete began causing all sorts of mischief until he was banished to another dimension. | После того, как в их мире был построен замок Диснея, а Микки стал его новым королем, Пит начал причинять всевозможные неприятности, пока его не изгнали в другое измерение. |
Riemann speculated that the absorbed aether is transferred into another world or dimension. | Риман предположил, что поглощенный эфир переносится в другой мир или измерение. |
The video is about two gray-skinned people, presumably aliens from another dimension. | В ролике речь идет о двух серокожих людях, предположительно пришельцах из другого измерения. |
They are also present as allies in the Drifters manga, where they were teleported to another dimension to wage war together. | Они также присутствуют в качестве союзников в манге бродяг, где они были телепортированы в другое измерение, чтобы вести войну вместе. |
It just opens up your mind to another dimension…Paranoid is the whole Sabbath experience; very indicative of what Sabbath meant at the time. | Это просто открывает ваш ум в другое измерение…Паранойя — это весь опыт субботы; очень показательно, что означала суббота в то время. |
In some classification schemes, these organisms are larger than 1 mm; in another, the smallest dimension must be at least 0.5 mm. | В некоторых классификационных схемах эти организмы имеют размеры более 1 мм; в другой-наименьший размер должен быть не менее 0,5 мм. |
The Dark Judges are four undead judges from another dimension, known as Deadworld. | Темные судьи-это четыре немертвых судьи из другого измерения, известного как мертвый мир. |
Another less important dimension of spread concerns the length of the in-flight shot string from the leading pellet to the trailing one. | Еще одно менее важное измерение разброса касается длины стреляной струны в полете от ведущей пули до хвостовой. |
Since there is no discussion of hierarchical organization in this article, it would add another dimension to it. Comments? | Поскольку в этой статье не обсуждается иерархическая организация, она добавит к ней еще одно измерение. Комментарии? |
Another dimension of the theoretical debate in contract is its place within, and relationship to a wider law of obligations. | Еще одним аспектом теоретической дискуссии о договоре является его место в более широком обязательственном праве и связь с ним. |
But before they can even get close enough, Hydron activates another dimension controller, causing the Bakugan to turn back into ball form. | Но прежде чем они успевают подойти достаточно близко, Гидрон активирует другой регулятор измерения, заставляя Бакуган снова превратиться в шар. |
As the player investigates this device, he is accidentally transported to another dimension and is trapped in a vast, maze-like cave. | Когда игрок исследует это устройство, он случайно переносится в другое измерение и оказывается в ловушке в огромной, похожей на лабиринт пещере. |
In fact, a particle is just another name for an excitation in a three-dimensional field, a localized wobbling in space. | По сути, частица — это лишь синоним возбуждения в трёхмерном пространстве, локализованное колебание в пространстве. |
Parallel universe, coexisting with ours on another dimensional plane. | Параллельная вселенная в другом измерении. |
Dimensional engineering — one space folded inside another. | Пространственная технология — одно место, вложенное в другое. |
Then, the cut-up geometrical shapes are slotted one into another and the resultant three-dimensional construct is attached to the initial print. | Затем вырезанные геометрические фигуры прорезаются одна в другую, и полученная трехмерная конструкция прикрепляется к исходному отпечатку. |
Another good property would be that the projections of xn on a lower-dimensional face of Is leave very few holes as well. | Еще одним хорошим свойством было бы то, что проекции xn на более низкоразмерную грань Is оставляют очень мало отверстий. |
Drawing is a form of visual art in which a person uses various drawing instruments to mark paper or another two-dimensional medium. | Рисование — это вид изобразительного искусства, в котором человек использует различные чертежные инструменты для маркировки бумаги или другой двумерной среды. |
Another example is NM data, where an NM image, by definition, is a multi-dimensional multi-frame image. | Другой пример-это NM-данные, где NM-изображение, по определению, является многомерным многокадровым изображением. |
The most common definition is given above, but another common alternative is to divide by the constant mk to obtain a dimensionless conserved eccentricity vector. | Наиболее общее определение дано выше, но другой распространенной альтернативой является деление на константу mk для получения безразмерного вектора сохраненного эксцентриситета. |
But if from the comparative dimensions of the whale’s proper brain, you deem it incapable of being adequately charted, then I have another idea for you. | Но если вы думаете, что раз у кита такой маленький мозг, то у него извилин тоже мало, я должен уверить вас в противном. |
A pair of Lego based Daleks were included in the Lego Ideas Doctor Who set, and another appeared in the Lego Dimensions Cyberman Fun-Pack. | Пара Далеков на основе Lego были включены в набор Lego Ideas Doctor Who, а еще один появился в пакете Lego Dimensions Cyberman Fun-Pack. |
ЕЩЕ ЕЩЕ ДРУГОЙ в английском переводе
ЕЩЕ ЕЩЕ ЕЩЕ в английском переводе — Примеры использования Еще один в предложении на голландском языке Это сокращение от « Another Compiler Compiler». Название является аббревиатурой от « Еще один компилятор ».Deerkomst van de naam «Yandex» zou initieel staan voor « Еще один индексатор .Yabasic ( Yet Another Basic) — это просто BASIC-интерпретатор для Windows и Unix. Yabasic ( Yet Another BASIC) — это бесплатный интерпретатор BASIC с открытым исходным кодом для платформ Windows и Unix.Яд (korte van Yet Another Dialog) — это форк с открытым исходным кодом, созданный Zenity с большим количеством ошибок. Yad (сокращенно от Yet Another Dialog) — это форк Zenity с открытым исходным кодом со множеством улучшений.Op track vijf genaamd ‘ Yet Another Armageddon’ текст, который мы получаем на трип-хопе На пятом треке под названием « Еще один Армагеддон» нас угощают поездкой. Yaourt staat voor Another User Repository Tool dat kan worden gebruikt voor het Yaourt означает . Другой инструмент репозитория пользователей , который можно использовать для поиска, Еще одна программа, разработанная для Unix, yacc, hetgeen, Еще один компилятор компилятора »betekent. Название — дань уважения yacc, « Another Compiler Compiler».Эта программа работает с более подробной информацией о продуктах Another Cleaner и поддерживает угонщик браузера V9. эта программа известна разработкой таких подозрительных продуктов, как Yet Another Cleaner и даже угонщика браузера V9.neem een kijkje в Don Box Еще одна библиотека COM YACL. возможно, взгляните на библиотеку YACL Another COM от Дона Бокса.YAC- (ook gewoon bekend als Another Cleaner / YAC PC Cleaner) YAC (также известный как Yet Another Cleaner / YAC PC Cleaner) ru мы deden, направляясь на север, прежде чем мы были поражены еще одним проколом от Ангуса. и мы сделали, направляясь на север, прежде чем нас поразило , еще одно проколотое от Ангуса.Эта программа работает с более подробной информацией о продуктах Another Cleaner и поддерживает угонщик браузера V9. и эта программа известна разработкой таких подозрительных продуктов, как Yet Another Cleaner и даже угонщика браузера V9. УведомлениеЭтот веб-сайт или его сторонние инструменты используют файлы cookie, которые необходимы для его работы
и необходимы для достижения
цели, указанные в политике использования файлов cookie.Если вы хотите узнать больше или отказаться
ваше согласие на использование всех или некоторых файлов cookie, см. политику в отношении файлов cookie.
Закрыв этот баннер, прокручивая эту страницу, щелкая ссылку или продолжая просмотр в противном случае, вы соглашаетесь на использование
файлов cookie.
Отказ от продажи личной информации
Мы не будем продавать вашу личную информацию, чтобы сообщать вам о рекламе. Вы по-прежнему можете видеть рекламу на основе интересов, если ваш
информация продается другими компаниями или была продана ранее.Уклоняться
Увольнять
ЕЩЕ ЕЩЕ ЕЩЕ в голландском переводе
ЕЩЕ ЕЩЕ ЕЩЕ в голландском переводе — примеры использования еще одного в предложении на английском языке Название является аббревиатурой от « Еще один компилятор ». Это сокращение от « Another Compiler Compiler». Op nóg een flashforward… die nooit gaat komen. Deerkomst van de naam «Yandex» zou initieel staan voor « Еще один индексатор . Мы превзошли и до выигрыша.». Крис Дебакер добавил к своим и без того впечатляющим пальмам еще одного провинциального первого приза . Chris Debacker zet nog maar eens een provinciale overwinning bij op zijn indrukwekkende erelijst.Почему бы тебе не выпить еще раз выпить и не оставить нас поговорить о делах, Schenk je zoveelste in en laat ons verder onze zaken bespreken. Leather ‘tot het zoveelste гимн над deze muzieksoort.Почему загадочный и почему « еще один »? Nog weer een voorbeeld, также we er nog een nodig hadden. Эдвин — nog een van Hals vrienden.Shadow’s Mignon — — это еще один -й коллектив немецкого музыканта и композитора. Еще один четыре, потому что это так близко к Альгамбре.Является ли Paul Waaktaaar-Savoy еще одной «неуместной» зависимостью для ремесла Хобо? Является ли Paul Waaktaar-Savoy een zoveelste «misplaatste» afhankelijkheid voor Hobo’s werk? Еще одна группа , ищущая защиты у России, — это японцы. Dit is nog weer een teken van de positieve voortgang.Это — это еще одна грубейшая ошибка восприятия со стороны мужчин! Dit is nog nog een grove inzicht fout vanwege man! Daar hebben мы nog maar een pizza gegeten en zijn we gaan slapen.Результатов: 1546, Время: 0.1316
УведомлениеЭтот веб-сайт или его сторонние инструменты используют файлы cookie, которые необходимы для его работы
и необходимы для достижения
цели, указанные в политике использования файлов cookie.Если вы хотите узнать больше или отказаться
ваше согласие на использование всех или некоторых файлов cookie, см. политику в отношении файлов cookie.
Закрыв этот баннер, прокручивая эту страницу, щелкая ссылку или продолжая просмотр в противном случае, вы соглашаетесь на использование
файлов cookie.
Отказ от продажи личной информации
Мы не будем продавать вашу личную информацию, чтобы сообщать вам о рекламе. Вы по-прежнему можете видеть рекламу на основе интересов, если ваш
информация продается другими компаниями или была продана ранее.Уклоняться
Увольнять
Обновлено в феврале 2006 г. Мой веб-сайт часто обнаруживают, обычно люди, ищущие индексаторов и архитекторов информации. Иногда люди находят меня, потому что слышат о моих курсах и презентациях, и пишут мне, потому что им нужна дополнительная информация. Я считаю, что нужно отвечать всем, кто со мной связывается, но часто я получаю одни и те же вопросы.Итак, я разработал эта страница как способ публикации ответов на самые распространенные вопросы. Это растущий документ, и я надеюсь что, поделившись этими ответами, я смогу лучше понять, что я делаю — и что вы можете сделать — и построить более сильное информационное сообщество. Если у вас есть вопрос, которого нет здесь, напишите мне по адресу [email protected], и я отвечу вам напрямую. Я, наверное, обновлю это страницу тоже. 🙂 Кстати, самые свежие записи часто задаваемых вопросов находятся вверху этой страницы.Итак, запись прямо под этим абзацем самый последний. Надеюсь, вы посетите мой FAQ еще не раз, просто чтобы проверить новейшие дополнения. ПРИМЕЧАНИЕ. Если вам нужна помощь в отношении возможностей индексирования в Microsoft Word — в некоторые дни мне очень хочется заключить это слово «возможности» в кавычки! — вы можете посетить мой Word Indexing FAQ. верх Сколько денег индексатор действительно может заработать? верх Следует ли индексировать глоссарии? entry1 определено, 301 entry2 определено, 301 entry3 определено, 302 entry4 определено, 302Если вместо этого вы используете полужирный шрифт для номеров страниц (практика, которую я очень не люблю), вы создаете визуальный путь из затемненных, упорядоченных чисел, от которых глаз не может ускользнуть.Посмотри на выше пример и посмотрите, как быстро ваш глаз находит либо (а) номера страниц, либо (б) числа в моем вводном тексте. Наши глаза хорошо видят закономерности. Глоссарии и указатели расположены в алфавитном порядке; вот в чём проблема. верх Какое программное обеспечение для индексирования мне следует использовать? верх Как лучше всего обрабатывать перекрестные ссылки в онлайн-индексах? Связанные темы : B , C , университеты Связанные темы : A , C , университеты верх Мы, вероятно, сможем сэкономить время, если не будем создавать диапазоны страниц. Они действительно нужны? электротехника, 15, 45-61, 422две трети всех участников семинара заявили, что сначала пойдут на 45-61 ряд; одна треть говорит, что они начнут со страницы 15; никто никогда выбирает страницу 422 в качестве отправной точки. Однако, когда я опускаю диапазон из индекса и создайте эту запись: электротехника, 15, 45, 422результаты впечатляют: 100% участников обращаются первыми к странице 15.Таким образом, вы можете видеть, как диапазон позволяет читателям выбирать более разумно. (Есть способы компенсировать недостающие номера страниц. См. Оба раздела «Обмен локаторами на подстатьи» в этом FAQ, и мою статью Indexing Online.) верх Что вы можете рассказать мне об отношениях между индексаторами и библиотекарями, и как они могут работать вместе? верх Есть ли у вас какие-либо советы для тех, кто исследует информационную архитектуру в качестве карьеры? верх Я ищу систематика с предметной специальностью. Вы можете помочь? верх Я слышал о курсе индексации, предлагаемом Министерством сельского хозяйства США (США Департамент сельского хозяйства). Можешь сказать мне, что ты об этом думаешь? верх Мы используем единый источник и не хотим использовать условный текст. Нам нужны записи в указателе которые появляются в печатной книге без сокращений продуктов, но появляются в Интернете с включенными акронимами чтобы помочь пользователям определить ассоциации продуктов. Например, в книге может быть одна запись «установка», но в скомпилированном онлайн-индексе может потребоваться различать пять «устанавливающих» записей.Как можно создать индекс, который используется один раз, который работает для обоих? установка, 50, 50, 50, 50, 50 установка забронировать: 50 книга b: 50 книга c: 50 книга d: 50 книга e: 50 электротехника, 35 электротехника, 40-60 возможности трудоустройства, 45-47 школ для, 59 См. Также инженерное дело верх Выполняется ли индексация книг с бумажной копии? верх Я слышал, что главные записи должны иметь либо локаторы (номера страниц), либо подстатьи, но не то и другое вместе. Вы согласны? принтеры общая информация, 55 введение в, 15 видов, 75 полезные советы, 35 принтеры, 15, 55, 75 полезные советы, 35 верх Как, по вашему мнению, следует индексировать аббревиатуры? (*) Перекрестная ссылка каталоги. Посмотреть папки папки, 001, 002, 003 (*) Двойная проводка справочники, 001, 002, 003 папки, 001, 002, 003 (*) Уточнение языка справочники (папки), 001, 002, 003 папки (каталоги), 001, 002, 003 каталоги. Посмотреть папки папки (каталоги), 001, 002, 003 Протокол передачи файлов. См. FTP FTP (протокол передачи файлов), 001, 002, 003 CORBA (архитектура посредника общих объектных запросов), 001 Всемирная паутина (WWW), 001, 002, 003 WWW (Всемирная паутина), 001, 002, 003 верх Можете ли вы объяснить логическую логику, определение границ и другие функции поисковых систем? верх Если бы вам пришлось написать индекс для 60-страничного технического руководства (например), сколько времени это займет и сколько это может стоить? верх Есть ли какие-либо особые проблемы с интернационализацией и локализацией при индексировании? верх 1 фунт яичной лапши 3 взбитых яйца 1 гр. сахар 1/2 гр. топленое масло 1 1/4 т. ваниль 1 1/2 т. корица 16 унций. емкость для сметаны 16 унций. емкость творога по желанию: 1 гр. светлый изюм |
Память переводов — Код как ремесло
Автор: Диего Алонсо
Как мы упоминали в Teaching Etsy to Speak a Second Language , разработчикам необходимо помечать английский контент, чтобы его можно было извлечь и затем перевести. Поскольку мы являемся компанией с непрерывным процессом разработки, мы делаем это ежедневно и в результате получаем значительное количество новых сообщений, которые необходимо перевести, а также изменения или удаления уже переведенных существующих.Поэтому нам нужна была какая-то система запоминания, чтобы легко повторно использовать или следовать стилю существующих переводов.
Память переводов — это организованный набор текста, извлеченного из исходного языка, с одним или несколькими совпадающими переводами. Система памяти переводов хранит эти данные и делает их легко доступными для переводчиков, которые могут помочь им в выполнении своих задач. В языковой индустрии существует множество систем памяти переводов и связанных стандартов.Тем не менее, характер извлеченных нами сообщений (содержащих соответствующие заполнители PHP, Smarty и JavaScript) и наше желание поддерживать стиль перевода, курируемый менеджером по человеческому языку, заставили нас разработать собственное решение.
Короче говоря, нам нужна была система, которая предлагала перевод извлеченных сообщений. Команда поиска Etsy интегрировала Lucene / Solr в нашу инфраструктуру развертывания, что позволяет конфигурации Solr, индексаторам на основе Java и логике синтаксического анализа запросов перейти к производственному коду за считанные минуты.Мы решили воспользоваться функцией MoreLikeThis от Lucene для индексации «похожих» документов, в данном случае похожих сообщений на английском языке с существующими переводами. Процесс оказался довольно простым: мы запрашиваем запрошенное сообщение на английском языке, используя ContentStream , в MoreLikeThisHandler и получаем в результате похожие сообщения с оценками. Это делается через интерфейс нашего переводчика через Thrift. Мы определили пороговое значение для фильтрации сообщений по баллам, чтобы предоставлять релевантные переводы только после получения похожих сообщений на английском языке из результатов запроса.
Стоит отметить, что нам нужно использовать ContentStream для отправки исходного сообщения, потому что большую часть времени мы будем запрашивать предложения по переводу новых сообщений. Другими словами, сообщения без переводов не присутствуют в нашем индексе для сопоставления как документы. При отправке ContentSream на MoreLikeThisHandler он извлечет «интересные» термины для выполнения поиска по сходству.
Вот простая схема основных частей этого процесса:
Мы могли легко протестировать и оптимизировать наши результаты в поисковой среде с помощью запросов Solr, прежде чем подключать службу в пользовательском интерфейсе переводчика.Как вы можете видеть в следующем запросе, мы отправляем содержимое ( stream.body ) сообщения на английском языке, играем с минимальной частотой документов ( mindf ) и частотой терминов ( mintf ) терминов и даже фильтруем запрос ( fq ) для переводов на определенный язык.
http: // localhost: 8393 / solr / translationmemory / mlt? stream.body = Присоединиться к% 20Now
& mlt.fl = content & mlt.mindf = 1 & mlt.mintf = 1 & mlt.интересноTerms = list
& fl = id, md5, content, type, score & fq = language: de
И поскольку мы знаем, что вы любите читать некоторый код, вот как мы определили типы данных нашей памяти переводов и интерфейс службы в Thrift:
struct TranslationMemoryResult { 1: строка md5 2: двойной счет } struct TranslationMemorySearchResults { 1: количество i32, 2: список сопоставленных сообщений } service TranslationMemorySearch расширяет fb303.FacebookService { / ** * Поиск памяти переводов * * @param содержание сообщения для соответствия * @param код языка существующих переводов * @return экземпляр TranslationMemorySearchResults - никогда не "null" * / TranslationMemorySearchResults search (1: строковое содержимое, 2: тип i32, 3: язык строк) }
Давайте рассмотрим несколько распространенных случаев использования памяти переводов.
Довольно часто выпускается новая функция, в которой мы хотим привлечь новых участников, добавив какую-то кнопку регистрации. В этом случае извлеченное сообщение на английском языке имеет следующие данные:
Описание: Призыв к действию присоединиться к etsy.com Содержимое: Присоединяйтесь
При отображении этого сообщения в пользовательском интерфейсе переводчика мы получаем следующие результаты после поиска его содержимого в нашей памяти переводов.
Соответствие Источник Перевод 100% Присоединяйтесь Jetzt teilnehmen 80% Присоединяйтесь сейчас.Это бесплатно! Jetzt anmelden. Костенлос!
Другой случай — когда у нас на сайте переведена целая функция, но мы пробуем другую копию в нашей английской версии. В следующем примере переводчики могут основывать свои переводы на следующих предложениях.
Описание: Текст, указывающий на отсутствие требований к экспериментальной функции. Содержимое: К прототипу особых требований не предъявляется. Добро пожаловать! Соответствие Источник / перевод 86% У этой команды нет особых требований.Добро пожаловать! / Dieses Team stellt keine speziellen Bedingungen. Willkommen! 86% У этого эксперимента нет особых требований. Добро пожаловать! / Für dieses Experiment gibt es keine speziellen Bedingungen. Willkommen!
Вот скриншот интерфейса нашего переводчика в действии:
Наличие такой системы памяти переводов оказалось действительно полезным для наших переводчиков, которые каждый день сталкиваются с новыми, отредактированными и удаленными сообщениями.Мы также обновляем наш индекс извлеченных сообщений каждые несколько минут, добавляя переводы и предлагая варианты исправлений.
Кроме того, мы создали менеджер глоссария переводов, чтобы поддерживать единый стиль при переводе. При просмотре сообщения на английском языке мы ограничиваем содержание сообщения и сопоставляем термины с нашим глоссарием. Несколько примеров из нашей немецкой версии сайта: «Искать» в «Suche», «Круги» в «Zirkel» и «Shop» в — как ни странно, английское слово — «Shop».
Итак, вот вам представление о том, как работают с переводами на Etsy.Следите за обновлениями, чтобы узнать больше о том, как мы справляемся с интернационализацией в Etsy.
Академическое индексирование и переводческие услуги — Фрэнсис Янг
Фрэнсис Янг — член Общества индексаторов и опытный профессиональный индексатор, переводчик и палеограф. Он специализируется на индексировании академических книг в области истории, теологии, классики и философии. В прошлом Фрэнсис активно работал корректором в издательствах STEM, особенно в области сельскохозяйственных наук, и был главным редактором серии отчетов Католического общества записи с 2015 по 2017 год.
Службы индексирования
Фрэнсис Янг регулярно составляет индексы для многих крупных издательств, включая Cambridge University Press, Oxford University Press, Brill, Brepols, Routledge, Boydell & Brewer, Bloomsbury Academic и Penguin.
Книги, недавно проиндексированные Фрэнсисом Янгом:
- W. François, V. Soen, A. Dupont, A. A. Robiglio (ред.), Возвращение к власти: к Томасу Мору и Эразму в 1516 г. (Brepols, 2020)
- Кэтлин Б.Нил, Письма Эдварда I: политическая коммуникация в тринадцатом веке (Boydell & Brewer, 2020)
- Рори Маклеллан, Пожертвования рыцарям-госпитальерам в Великобритании и Ирландии, 1291-1400 (Рутледж, 2020)
- Себ Фальк, Легкие века: средневековое путешествие открытий (Пингвин, 2020)
- А. Уолшем, Б. Уоллес, К. Ло и Б. Каммингс (ред.), Память и английская реформация (Cambridge University Press, 2020)
Фрэнсис также может предоставить специальные указатели, такие как библейский справочный указатель и указатель классических текстов, если этого требует книга.Плата за индексацию Фрэнсиса обычно соответствует рекомендациям Общества индексаторов. Пожалуйста, свяжитесь с Фрэнсисом для получения более подробной информации.
Переводческие услуги
Фрэнсис Янг — специализированный переводчик средневековых и ранних латинских текстов, он может переводить как отрывки прозы и поэзии, так и более длинные тексты, такие как юридические документы и отчеты. Его переводы включали перевод стихов к 800-летию Солсберийского собора в 2020 году, который был положен на музыку как гимн Солсбери, и он обычно переводит на латынь для проекта средневекового граффити.
Пожалуйста, свяжитесь с Фрэнсисом для получения дополнительной информации о его переводческой работе.
Услуги палеографии
Фрэнсис Янг — специалист по чтению средневековых и ранних латинских рукописей, и может предоставить транскрипции текстов рукописей (обратите внимание, что если вам также потребуется перевод, он будет оплачиваться отдельно). Пожалуйста, свяжитесь с Фрэнсисом для получения более подробной информации.
Нравится:
Нравится Загрузка …
Компания вошла в станк […]с первым в мире, полностью […] автоматический, программный ab l e индексатор цанги — a устройство использовалось […]для позиционирования деталей для обработки с очень высокой точностью. int.haascnc.com | Firma weszła do branży obrabiarek […]wprowadzając na rynek pierwszy na świecie w pełni automatyczny, programowalny […] aparat podział o wy z tulejkami zaci sk owymi–.int.haascnc.com |
Haa s 5 C индексатор цанги w a s огромный успех, […] , и в течение следующих четырех лет компания расширила свою продуктовую линейку до […]широкий выбор полностью программируемых поворотных столов, индексаторов поворота и принадлежностей для станков. int.haascnc.com | Aparat pod zi ało wy z tulejkami zaci skow ym i 5C odniósł […] ogromny sukces i w ciągu kolejnych kilku lat firma rozszerzyła swoją […]ofertę produktową, włączając do niej szeroką gamę w pełni programowalnych stołów obrotowych, obrotowych aparatów podziałowych i akcesoriów do obrabiarek. int.haascnc.com |
Джин Хаас основал Haas Automation в 1983 году, чтобы произвести первый в мире полностью […] programmabl e 5 C индексатор цанги .haascnc.com | Gene Haas założył firmę Haas […]Automation w 1983 r., I wyprodukował pierwszy na świecie w pełni programowalny aparat […] podział ow y z uchwytem tul ei zaciskowych 5C.int.haascnc.com |
Убедитесь, что Sea ga t e Indexer ( S ea gate Backups) выбран в области Indexing Plug-ins. seagate.com | Sprawdź, czy jest zaznaczone pole wyboru Seaga te Indexer (K opie zapasowe Seagate) w obszarze I ndeksowanie rozszerzeń. seagate.com |
Каждый Makino […] установлен с h a n indexer , w hi ch, хотя […]используется для различных работ, чтобы сократить трудоемкую ручную настройку […]для каждой грани, позиционируется не так точно, как того требует работа. renishaw.jp | Każda maszyna Makino […] jest wypo sa on и w indekser , kt óry j est wykorzystywany […]w wielu zadaniach w celu skrócenia czasu ręcznego […]ustawiania każdej płaszczyzny. renishaw.com |
Перейдите в Системные настройки> Внешний вид и поведение рабочего пространства> Поиск на рабочем столе> Основные настройки и поставьте галочку […]отметки в полях для Enable Nepomuk Semantic Desktop и Enable […] Strigi Desktop Fi l e Indexer , a и , затем нажмите Apply.manual.aptosid.com | W zaawansowanych ustawieniach użytkownika wejdź w> Wyszukiwanie na pulpicie> Podstawowe ustawienia […]i zaznacz pole Włącz кафедра semantyczny Nepomuk […] i Włą cz modu ł indeksowania pl ików S trigi, a […]następnie kliknij Zastosuj. manual.aptosid.com |
Вдавить т h e цанга a x ia lly в зажимную гайку до т h e цанга h e ad зажимается в […] канавка для извлечения (примечание: без эксцентрика). fahrion.de | Nas tę pnie wcisnąć osiow o tuleję zaciskową do zgrubienia nakrętki mocującej (nie […] mimośrodowo!). fahrion.de |
Цанга c h uck s , цанги , s pe cial index plate, […] , фиксированные и регулируемые задние бабки, лицевые панели и опорные блоки доступны по запросу. каталог.hhw.de | Z ac iski, tuleje zaciskowe, spec ja lne tarcze […] podziałowe, imadła, zabieraki, koniki, tarcze tokarskie i wsporniki dostępne na zamówienie. каталог.hhw.de |
Программирование привода: embe dd e d indexer f u nc в […] Аналоговые / импульсные модели industrial.omron.eu | Programowanie napędu: […] zintegrowana f un kcja indeksera w mo de lach analogowych / impulsowychindustrial.omron.pl |
Indexer f u lf выполняет задачу подготовки этих файлов, и этот процесс называется индексацией. mainseek.net | Indexer ma za zadanie przygotowanie tych plików a process ten nazywamy indeksacją. mainseek.net |
Индексатор P o si Работа Литература.Rock … lautomation.com | Pozycjonowa nie z funkcją indek so wania Lithuania.rock …lautomation.com |
Запуск любого типа […] веб-сайта r o r indexer ( i nc luding Google […]Cash / AdSpy) на общих серверах. liveserversolution.com | Biegać każdy […] rodzaj pa ją ka l ub indeksator (G oogle g otówka […]/ AdSpy) на wspólne serwery. liveserversolution.com |
Простое обращение: снимите т h e цанга , c на соедините руку […] защиты, установите шайбу на шпиндель и затяните шлифовальный […] Колесос зажимным винтом (при ширине диска от 6 мм шайба не требуется). пферд.com | Atwa obsługa: us uną ć tuleję, n ało y ć rękawiczki, […] na wrzeciono nałożyć podkładkę i tarczę dociagnąć śrubą mocującą (tarcza […]„U“ odpada przy grubości od 6 мм). pferd.com |
Если передняя часть внутреннего кольца полностью сидит на выступе вала без канавок для съемника, то […]однорядные шариковые подшипники, конические подшипники и цилиндрические подшипники могут быть демонтированы […] используя spe ci a l цанга p u ll ers.zvls Slovakia.sk | oyska kulkowe jednorzędowe, łoyska stożkowe i walcowe można demontować za pomocą […]specjalnych ściągaczy zaciskowych, jeśli ich pierścień wewnętrzny jest osadzony w pełni […] na wale b ez rowków dl a ściągacza.zvls Slovakia.sk |
Сняв режущий инструмент с т h e цанга , l при общем давлении т h e цанга w i ll облегчить снятие зажимной гайки. fahrion.de | Po wyjęciu narzędzia z tulei za ciskowej tuleja pod działaniem bocznego nacisku wyskoczy z nakrętki mocującej. fahrion.de |
Необходимо убедиться в отсутствии стружки или грязи на поверхности t h e цанга , w hi ch может отрицательно повлиять на точность системы и повредить t h e цанга . fahrion.de | Podczas wymiany na powierzchnie […] mocowania tulei zaciskowej nie mog dostać się wióra ani inne zanieczyszczenia, ponieważ mogłyby one spowodować zwiększenie bicia i us zk odzen ie zko zko ie zko zko ie c Tulei zko iefahrion.de |
При необходимости вставить уплотнение (вулканизированная сторона должна […] расположите относительно т h e цанга f a ce ).fahrion.de | W razie potrzeby włożyć pasujcą podkładkę uszczelniającą do nakrętki mocujcej (gumowa strona podkładki uszczelniającej w […] kierunku t ulei zaciskowej) .fahrion.de |
Внутренний […] позиционирование wi t h indexer f u NC функциональностьindustrial.omron.co.uk | Wewnętrzn e […] pozycjonowani e z funkcją ind ekser aindustrial.omron.pl |
Ballbar QC20-W, лазер XL-80, XC-80 […] компенсатор и RX10 ro ta r y indexer ( a nd их ML10 и QC10 […] Эквиваленты) поставляются с […]полные сертификаты калибровки, включая подробную информацию о «прослеживаемости» результатов испытаний. renishaw.com | QC20-W ballbar, лазерный XL-80, […] kompens at или XC-80 o raz indekser obro to wy RX10 (o raz ich […]odpowiedniki ML10 i QC10) są dostarczane […]z obszernymi certyfikatami kalibracji, zawierającymi szczegóły «zgodności z normami» wyników testu. renishaw.com |
Точное позиционирование с помощью P CA M , Индексатор a n d Зубчатая передача Lithuania.rock … lautomation.com | Dokład ne pozycjonowanie z zastosowaniem PCAM, funkcji indexowania i przekładni Lithuania.rock … lautomation.com |
Mnogosearch ’ s indexer i s i nvoked from cron и […] создает собственное соединение с базой данных. blog.thedigitals.pl | Индексатор w mn ogose arc h wywoływany j est z cr on ‘a i ustanawia […] własne połączenie z bazą danych. blog.thedigitals.pl |
Элемент ввода f o r indexer i s a специальный файл / файлы, […] так называемый IDX. mainseek.net | Elementem w ej ścio wym dl a indeksera j est sp ecjal ny plik / pliki, tzw. mainseek.net |
Это позволяет избежать ненужной передачи данных по сети, если данные находятся на […] тот же сервис r a s indexer , o r double data […]передача (от источника к импортеру […]и от импортера в Solr). solr.pl | Pozwala to na uniknięcie zbędnego przesyłania danych przez sieć, jeśli […]датчанин знайду сьен на засобье локальным […] względem se rw era indeksującego , lu b podwójnego […]przesyłania danych (ze źródła do importera, z importera do Solra). solr.pl |
Обратите внимание на то, что CENTRO P […] прецизионная si o n цанга c h uc k system, […]и сконструирован для зажима номинального диаметра […] Только, чтобы достичь максимально возможной точности системы и оптимальной стабильности! fahrion.de | Należy zwrócić uwagę, e CENTRO P до […] precyzyjny uc hwyt zaciskowy , któ ry jest […]przeznaczony tylko do mocowania narzędzi o znamionowej […]średnicy w celu zapewnienia maksymalnej dokładności ruchu obrotowego i optymalnej стабильности! fahrion.de |
Расширение просто […] установлен в т h e цанга o f t he machine […](воздушная или электрическая шлифовальная машина) или вставляется в наконечник с гибким стержнем. pferd.com | Przedłużkę […] mocuje się do tulei ma sz yny lub w […]uchwyt wałka giętkiego. pferd.com |
Используйте прилагаемый ключ патрона для ослабления t h e цанга , t he n вставьте подходящее сверло, в зависимости от того, в каком материале вы будете просверливать отверстие. как можно глубже. download.pneumatig.eu | Użyj załączonego klucza do poluzowania uchwy tu wiertarskiego, n astępnie umieść odpowiednie wiertło dostosowane do materiału, w którym będzieszak wiertarskiego. download.pneumatig.eu |
Принадлежности, например […] задние бабки wi t h цанга c h uc k устройств, […] Призматические вставкии призматические блоки с шарикоподшипниками доступны по запросу. каталог.hhw.de | Akcesoria takie jak […] koniki z ins ta lacj ą tulei za cisk ow ej, nakładki […]pryzmowe, koziołki pryzmowe i koziołki do rozwijania […]przewodów z łożyskami kulkowymi dostępne na zamówienie. каталог.hhw.de |
Позволяет использовать колесные щетки с отверстиями для установки на […] приводы wi t h цанга c h uc ks например электрический […]прямые шлифовальные машины, привод с гибким валом. pferd.com | Możliwe użycie szczotek tarczowych z […] otworem na na pę dac h z t ulej ą zaciskową […]нп. szlifierki elektryczne proste, napędy wałków giętkich. pferd.com |
Российский Яндекс, сокращение от «Все же Ано th e r Indexer , » h и составляет около 66% поисковых запросов в России и получает около 80% своих доходов в Интернете. реклама. infradata.nl | Rosyjski Yandex, czyli skrót od «Еще один AMS-IX» (jeszcze jeden indeksator AMS-IX) obsługuje około 66% rosyjskich zapytań internetowych и czerpie zyski z około 80% dochodów z reklam online. infradata.pl |
Блог | Страница 38 из 39
Вчера вечером Ассоциация редакторов Канадской Британской Колумбии. На собрании филиала присутствовал спикер Уокер Паутц из Управления малых и средних предприятий Канады (OSME) по общественным работам и правительственным службам, который предоставил нам ресурсы для продажи наших услуг правительству Канады. OSME также ежемесячно проводит эти презентации в Small Business B.C.
Я был на предконференционном семинаре EAC о торгах по государственным контрактам, представленном тремя членами EAC, и мне было интересно, будет ли презентация собрания филиала, по сути, перефразированием этой информации, но вчера вечером я ушел с некоторой информацией. не знал.
Фон
PWGSC покупает товары и услуги для всех других государственных ведомств; отдельные отделы могут сами купить до 25 000 долларов, не проходя через PWGSC. (Я не знал об этой последней части; для индивидуальных фрилансеров, которые ищут небольшие контракты, прямой переход в отделы может быть лучшей стратегией, чем торги через MERX.)
В поисках возможностей
Чтобы вести дела с федеральным правительством, зарегистрируйтесь в информационной системе регистрации поставщиков.Этот процесс дает вам номер компании по закупкам (PBN), который позволяет вам регистрироваться в других базах данных, делать ставки по контрактам и получать оплату; PBN является обязательным для ведения бизнеса с PWGSC.
Ищите возможности для ставок — запросы на предложения или запросы на постоянное предложение, как правило, — на MERX или Professional Services Online (для контрактов на сумму до 76 600 долларов США). Каждому товару или услуге присваивается товарный код, также известный как идентификационный номер товара и услуги (GSIN). Вы можете искать в базах данных по ключевым словам или GSIN.
На MERX вы можете подписаться на рассылку уведомлений о соответствующих возможностях по электронной почте. Вы также можете просмотреть, кто еще загрузил конкретную возможность предложения ставок; это позволяет вам расширить круг ваших конкурентов, но также может создать некоторые возможности для заключения субподряда или партнерства.
Некоторые правительственные сайты, такие как Бюро переводов, позволяют вам напрямую зарегистрироваться в качестве поставщика.
г. до н. Э. не публикует сообщения на MERX; он использует B.C. Сделайте ставку, так что проверьте и там.
Торги
При составлении предложения следуйте инструкциям в RFP или RFSO, делайте свою презентацию ясной и простой, и пусть ваше предложение будет отредактировано и / или вычитано.Убедитесь, что вы соответствуете минимальным обязательным требованиям, и проверьте даты закрытия, чтобы убедиться, что у вас есть время, чтобы подать заявку. (Вам разрешается вносить изменения в свою заявку до даты закрытия — чего я не знал). Дон Не предполагайте, что оценщики знают, кто вы, даже если вы вели с ними дела в прошлом.
У каждой заявки будет один контакт, которому вы можете задать вопросы. Этот человек объединит все вопросы в поправку к первоначальному RFP / RFSO.
В некоторых запросах предложений и RFSO некоторые юридические формулировки будут опущены и вместо этого будут отсылаться к Руководству по стандартным положениям и условиям приобретения (SACC).
Большинство RFP / RFSO просят вас хранить свои технические и финансовые предложения отдельно. Некоторые потребуют допуска службы безопасности; вам не нужно получать это заранее, но вам нужно будет получить его, если ваша ставка будет успешной. Однако, как только он у вас появится, вы сможете использовать его для других целей в течение определенного количества лет.
После закрытия
Если ваша ставка не будет успешной, вы можете запросить отчет в закупающей организации в течение трех недель после даты закрытия сделки; Организация-заказчик сообщит вам сильные и слабые стороны вашей заявки.
Если у вас есть вопросы или сомнения, вы можете связаться с Офисом омбудсмена по закупкам.
Меньшие контракты
Чтобы получить контракты на сумму менее 25 000 долларов, лучше всего продавать напрямую отдельным отделам, точно так же, как вы бы продвигались с частным клиентом. Для поиска контактов,
На сайте каждого отдела вы можете увидеть прошлые контракты, которые были заключены.
Даже если вы станете поставщиком, прошедшим предварительную квалификацию, выиграв тендер на RFSO, вам все равно придется продвигать себя, потому что орган, ответственный за контракт, вероятно, не является конечным пользователем ваших услуг.Упоминание о том, что вы являетесь поставщиком, прошедшим предварительную квалификацию, может помочь в этом.