http___blog.nediko.info_2019_01_1.xml
https___ffald-y-brenin.org_category_news-and-announcements_page_2_.xml
1.1 1.2 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.1 3.2 4.1 4.2 6.1 8.1 9.1 10.1 11.1 12.1 14.1 16.1 16.2 17.1 17.2 18.1 19.1 20.1 23.1 24.1 25.1 26.1 27.1 28.1 29.1 31.1 32.1 34.1 36.1 39.1 40.1 41.1 42.1 43.1 47.1 48.1 49.1 51.1 52.1 53.1 54.1 55.1 58.1 59.1 60.1 61.1 63.1 64.1 65.1 66.1 69.1 70.1 70.2 70.3 71.1 72.1 72.2 72.3 72.4 72.5 72.6 73.1 74.1 75.1 76.1 76.2 77.1 77.2 77.3 78.1 79.1 79.2 80.1 80.2 81.1 82.1 82.2 83.1 84.1 85.1 85.2 85.3 85.4 85.5 85.6 86.1 86.2 86.3 87.1 87.2
Ще се опитам да опиша простичко, как се разработва прост extension add-on за Chrome. Понякога е много полезно да се работи с подобни скриптове, особено при скрапване на web-съдържание, когато конвенционалните методи не работят или изискват прекалено много усилия. За да се създаде подобен скрипт с потребителски интерфейс ще са ни необходими няколко файла: manifest.json – всяка добавка (extension) за Chrome (а и за другите браузери) съдържа подобен скрипт, който предоставя важна информация на браузера. Повече тук: Manifest File Format popup.html – стандартно наименование на файла с потребителския интерфейс, който се появява при клик с мишката върху добавката. Разбира се, можем да създадем добавка, която няма нужда от потребителски интерфейс, но в случая аз искам да имам. Името на този файл се посочва в manifest.json. popup.js – файл, който се зарежда чрез popup.html. Можем и да нямаме подобен файл и да поместим javascript кода направо в popup.html. Но тенденциите в модерното програмиране съветват да се диференцира всичко – стилове, скриптове, html. В моя случай popup.js е двигателя на Chrome добавката. Той посочва какво, кога и къде да се активира. getPagesSource.js – файл за инжектиране в web-страницата и извлича информацията от нея. Този файл се зарежда от popup.js. icon.png – някаква иконка, която да се показва в листата с добавките на Chrome. Нека създадем скрипт, който извлиза съдържанието на определени тагове, като използваме javascript функцията querySelectorAll(). Много приятна функция, която заменя в известна степен нуждата от XPath при web-скрапинга. Да започваме! Първо създаваме manifest.json, като описваме какво прави тая добавка: "name": "Simple web scraper", "manifest_version": 2, "description": "Get content from tags through querySelector", "browser_action": { "default_icon": "icon.png", "default_popup": "popup.html" "permissions": ["tabs", " "] След това си правим потребителския интерфейс popup.html – бутончета, поленца, форми, стилове, каквото ни е кеф. В случая ще се огранича на минимума за моите нужди – текстово поле, бутон, слой за резултата: В по-горния скрипт се вижда, че зареждам popup.js. Неговото съдържание е следното: chrome.runtime.onMessage.addListener(function(request, sender) { if (request.action == "getSlectedContent") { message.innerHTML = request.source; document.querySelector('#getselector').addEventListener('click', winLoad); function winLoad() { var message = document.querySelector('#message'); var inputSel = document.querySelector('#selector').value; var queryInfo = { active: true, currentWindow: true chrome.tabs.query(queryInfo, function(tabs) { chrome.tabs.sendMessage( customSelector: inputSel function(response) { chrome.tabs.executeScript(null, { file: "getPageContent.js" }, function() { if (chrome.runtime.lastError) { message.innerText = 'There was an error injecting script : \n' + chrome.runtime.lastError.message; Чрез popup.js зарежда javascripta, който се инжектира в страницата – getPageContent.js: chrome.runtime.onMessage.addListener(function(request, sender) { selElements(document, request.customSelector); function selElements(document_root, s){ // Tova go dobaviam zaradi kefa da polzvam foreach() v JavaScript var forEach = function (array, callback, scope) { for (var i = 0; i < array.length; i++) { callback.call(scope, i, array[i]); var myNodeList = document.querySelectorAll(s); var concatenateall = ''; forEach(myNodeList, function (index, value) { concatenateall = concatenateall + value.innerHTML + " "; // return concatenateall; chrome.runtime.sendMessage({ action: "getSlectedContent", source: concatenateall Това е. Сега остава да заредим добавката в Chrome. Това става като отворим More Tools -> Extensions. След това кликаме на бутона Load unpacked и избираме директорията с файловете на нашата добавка. На базата на тази добавка могат да се направят много други, тъй като съдържа базата за писане на добавки за Chrome. Хрумна ми една идея за разтегателно легло и реших да я запиша. Някой ден може да реализирам или да направя нещо друго на базата на тази идея. Точно такова разтегателно легло не съм виждал, а мисля, че има смисъл в подобна конструкция. Може да се ползва в ограничени пространства или като легло за гости. Боунус е възможността за монтиране на голямо чекмедже. Ренднах в Blender няколко картинки, които показват, каква точно ми е идеята за разтегателно легло. Това е свития, компактен вариант на леглото: Разтягането става, като се издърпа лявата страница: Скарата на леглото е изградена от летвички 950x40x20mm, а материал примерно липа: Летвичките са разположени шахматно. На плъзгащата част е монтирана ограничаваща летвичка. Матрака може да е двойно сгъваем с размери на отделните части 820x950x100mm. При разпъване се получава матрак 1900x820x100mm. За по-голямо удобство, след разтягане може да се метне отгоре един топ-матрак, примерно от тук: Летвичките профил 4x2cm могат да се вземат от тук: Корпуса на леглото е проектиран от ЛПДЧ 18mm. Страниците и дъното на чекмеджето са проектирани от суров МДФ 12mm. Има какво още да се помисли, като например при компактния вариант на леглото има луфт от страни между матраците и страницата. Като ми дойде музата, ще помисля, как мога да го подобря. Ето и кратко видео, което показва цялата ми идея за разтегателно легло: This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish.AcceptRead More Privacy & Cookies Policy Privacy Overview This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience. Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information. Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.
1.1 1.2 2.1 2.2 3.1 3.2 3.3 3.4 4.1 4.2 4.3 5.1 5.2 6.1 6.2 6.3 7.1 7.2 7.3 7.4 7.5 7.6 8.1 8.2 8.3 9.1 9.2
We learned with great sadness of the death of Phyllida Mould, who went to be with the Lord on December 11th 2021. Phyllida and her husband Peter moved to what became Ffald y Brenin in 1984, founding the charitable trust the following year and developing the... We’re thrilled to introduce you to the Goddards: Martyn & Annette are moving into the area so that Martyn can shortly take up the new role of general manager at Ffald y Brenin. They’ve been based since 2019 on the Isle of Man, but have lived all over the world... Last year’s Ffald y Brenin calendar was such a big hit we’d like to create a new one for 2022! This time, we’d love to include our guests in the process. We’re curious to see what you have captured during your stay here. Do you have some... Spring is in the air – the snowdrops and daffodils are brightening the landscape here at Ffald y Brenin and the sun has been shining. And that sense of re-emergence is evident in other ways too. We hope to partially reopen soon after Easter and we are eager to embrace... Our first few weeks working here at Ffald y Brenin were dramatic… two major weather systems took out the phones and internet and COVID took hold, causing the centre to close a month after our arrival. All this amidst getting to know new people, new ways, and a new... During lockdown we’ve made some much-needed upgrades here at the Centre. Fire safety has been upgraded so that the Centre is now fully compliant with the latest legal requirements, including a fully automatic alarm system and new fire doors. It was a blow to be... This website uses cookies to improve your experience while you navigate through the website. Out of these cookies, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may have an effect on your browsing experience. Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information. Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.