{ "version": "https:\/\/jsonfeed.org\/version\/1.1", "title": "Ихрь постит в уютный бложик", "_rss_description": "Фрирайтинг, заметки, шитпостинг и все подряд", "_rss_language": "ru", "_itunes_email": "", "_itunes_categories_xml": "", "_itunes_image": "", "_itunes_explicit": "", "home_page_url": "https:\/\/ifedyukin.ru\/blog\/", "feed_url": "https:\/\/ifedyukin.ru\/blog\/rss\/", "icon": "https:\/\/ifedyukin.ru\/blog\/pictures\/userpic\/userpic@2x.jpg?1680703879", "authors": [ { "name": "Игорь Федюкин", "url": "https:\/\/ifedyukin.ru\/blog\/", "avatar": "https:\/\/ifedyukin.ru\/blog\/pictures\/userpic\/userpic@2x.jpg?1680703879" } ], "items": [ { "id": "79", "url": "https:\/\/ifedyukin.ru\/blog\/all\/how-to-sync-obsidian-between-ios-devices\/", "title": "How to sync Obsidian between iOS devices", "content_html": "
I’ve written a lot of notes since 2010, I really like methodologies like second mind and Zettelkasten, and as a consequence I really like Obsidian.<\/p>\n
And many times I’ve seen people find solutions to synchronize different iOS\/iPad OS devices without iCloud and Obsidian Sync. People use Apple Shortcuts and third-party tools like Working Copy to sync Obsidian via git, or use terminal emulators like iSH to mount the vault directory and sync it manually.<\/p>\n
But Obsidian on mobile devices (yes, iOS too) supports community plugins.
\nAnd instead of reinventing the wheel, you can... just install the plugin you need.<\/p>\n
Just go to Settings — Community Plugins — Browse. And install:<\/p>\n
Yes, it works on iOS devices, it works natively and automatically on startup, you just need to enable it in the settings. And also you can add shortcut to Obsidian menu to call action you need.
\nEnjoy!<\/p>\n",
"date_published": "2023-10-15T19:39:31+03:00",
"date_modified": "2023-10-15T19:39:13+03:00",
"tags": [
"community",
"education",
"life"
],
"_date_published_rfc2822": "Sun, 15 Oct 2023 19:39:31 +0300",
"_rss_guid_is_permalink": "false",
"_rss_guid": "79",
"_e2_data": {
"is_favourite": false,
"links_required": [],
"og_images": []
}
},
{
"id": "78",
"url": "https:\/\/ifedyukin.ru\/blog\/all\/fix-apple-pencil-2-ipad-connection\/",
"title": "Fix Apple Pencil 2 iPad connection",
"content_html": "
Sometimes when you connect Apple Pencil 2 to iPad, the battery level is not displayed, only «Apple Pencil» notification appears and the screen does not recognize the pen.<\/p>\n
To fix it:<\/p>\n
In some cases it works after 2-3 times.<\/p>\n
Be careful. It can indicate about damaged Apple Pencil battery or the pen itself.<\/p>\n", "date_published": "2023-10-14T19:50:06+03:00", "date_modified": "2023-10-15T15:39:57+03:00", "tags": [ "life" ], "_date_published_rfc2822": "Sat, 14 Oct 2023 19:50:06 +0300", "_rss_guid_is_permalink": "false", "_rss_guid": "78", "_e2_data": { "is_favourite": false, "links_required": [], "og_images": [] } }, { "id": "77", "url": "https:\/\/ifedyukin.ru\/blog\/all\/how-to-inline-tailwindcss-styles-to-ssr-nextjs\/", "title": "How to inline TailwindCSS styles to SSR NextJS", "content_html": "
By default, NextJS may not include Tailwind styles in the SSR build, and with disabled JavaScript, your site may look ugly like pure HTML.<\/p>\n
To fix this, you need to install the critters<\/i> package.<\/p>\n And enable optimizeCss<\/i> rule in next.config.js<\/i>.<\/p>\n Source: next.js#12868<\/a>.<\/p>\n",
"date_published": "2023-10-04T11:54:42+03:00",
"date_modified": "2023-10-04T11:56:53+03:00",
"tags": [
"development",
"javascript",
"react"
],
"_date_published_rfc2822": "Wed, 04 Oct 2023 11:54:42 +0300",
"_rss_guid_is_permalink": "false",
"_rss_guid": "77",
"_e2_data": {
"is_favourite": false,
"links_required": [
"system\/library\/highlight\/highlight.js",
"system\/library\/highlight\/highlight.css"
],
"og_images": []
}
},
{
"id": "74",
"url": "https:\/\/ifedyukin.ru\/blog\/all\/change-ssh-port-on-ubuntu-22-using-ansible\/",
"title": "Change SSH port on Ubuntu 22 using Ansible",
"content_html": " After updating Ubuntu 22.10 SSHd uses socket-based activation. I spent half of the day setting up graphql-codegen to generate the correct types for fragment queries.<\/p>\n At first, my code looked like this:<\/p>\n So, with the basic config<\/a> I did get an unknown type for both the query and the fragment:<\/p>\n I found a simple solution for this — we need to remove the string interpolation for the fragment literal from the query, because graphql-codegen automatically includes<\/a> fragments.<\/p>\n As a result, I did get an not unknown type, but the type with no data from the fragment for the query fragment.<\/p>\n I lost the most time at this stage, eventually finding a solution in the small GitHub thread<\/a>. We need to disable fragment masking feature<\/a>.<\/p>\n Finally the type contains all the information and it is complete!<\/p>\n Sometimes, after installing Charles or any other web proxy on your Mac OS, Outline VPN or any other 3rd party client on your Mac OS can break your VPN connection. To fix it you need to:<\/p>\n Alternatively, you can manually remove the proxy server configuration from<\/p>\n using any plist editor (e. g. BBEdit) and restart your OS.<\/p>\n",
"date_published": "2023-02-03T15:02:19+03:00",
"date_modified": "2023-02-03T15:02:06+03:00",
"tags": [
"mac"
],
"_date_published_rfc2822": "Fri, 03 Feb 2023 15:02:19 +0300",
"_rss_guid_is_permalink": "false",
"_rss_guid": "72",
"_e2_data": {
"is_favourite": false,
"links_required": [],
"og_images": []
}
},
{
"id": "71",
"url": "https:\/\/ifedyukin.ru\/blog\/all\/pro-debag-v-staryh-safari\/",
"title": "Про дебаг в старых Safari",
"content_html": " Знаете, что самое веселое в фронтенд-разработке после похорон IE? Как я делал с IE? Качал виртуалку с сайта MS с нужной версией IE и спокойно дебажил.<\/p>\n Как я делаю с Safari? Ищу образ виртуалки, их же официально никто не распространяет, а ушлые ребята распространяют образы только через Patreon, WTF?<\/p>\n На ноут я не могу поставить виртуалку со старой Mac OS, потому что у меня ARM процессор. На ПК я не могу поставить потому, что у меня там процессор AMD, а почему-то на новых AMD виртуалки как-то криво инструкции транслируют.<\/p>\n В итоге приходится искать макбуки на Intel, на них ставить виртуалку со старой ОС и там дебажить — во житуха!<\/p>\nnpm install critters<\/code><\/pre>
experimental: {\r\n optimizeCss: true,\r\n},<\/code><\/pre>
\nAs a result, the sshd configuration port does not affect the listening port.
\nTo change the port, we need to perform the following tasks:<\/p>\n- name: Create config folder\r\n file:\r\n path: \/etc\/systemd\/system\/ssh.socket.d\r\n state: directory\r\n recurse: true\r\n\r\n- name: Create config file\r\n copy:\r\n dest: \/etc\/systemd\/system\/ssh.socket.d\/listen.conf\r\n content: |\r\n [Socket]\r\n ListenStream={{ custom_ssh_port }}\r\n\r\n- name: Reload systemd manager\r\n systemd:\r\n daemon_reload: yes\r\n\r\n- name: restart ssh\r\n service:\r\n name: "ssh"\r\n state: restarted\r\n\r\n- name: Update connection port\r\n set_fact:\r\n ansible_ssh_port: "{{ custom_ssh_port }}"<\/code><\/pre>",
"date_published": "2023-03-29T18:46:00+03:00",
"date_modified": "2023-03-29T18:45:52+03:00",
"tags": [
"development",
"devops"
],
"_date_published_rfc2822": "Wed, 29 Mar 2023 18:46:00 +0300",
"_rss_guid_is_permalink": "false",
"_rss_guid": "74",
"_e2_data": {
"is_favourite": false,
"links_required": [
"system\/library\/highlight\/highlight.js",
"system\/library\/highlight\/highlight.css"
],
"og_images": []
}
},
{
"id": "73",
"url": "https:\/\/ifedyukin.ru\/blog\/all\/how-to-fix-unknown-fragments-types-in-graphql-codegen\/",
"title": "How to fix unknown fragments types in graphql-codegen?",
"content_html": "
\/\/ file1\r\nexport const DIALOG_FIELDS = gql(`\r\n fragment DialogFields on Dialog {\r\n id\r\n name\r\n }\r\n`);\r\n\r\n\/\/ file2\r\nexport const GET_DIALOG = gql(`\r\n ${DIALOG_FIELDS}\r\n query GetDialog($dialogId: ID!) {\r\n dialog(id: $dialogId) {\r\n ...DialogFields\r\n }\r\n }\r\n`);<\/code><\/pre>
const config: CodegenConfig = {\r\n schema: CONFIG.apiHost,\r\n documents: ['src\/**\/*.{tsx,ts,js,jsx}', '!src\/gql\/__generated__\/*.ts'],\r\n generates: {\r\n '.\/src\/gql\/__generated__\/': {\r\n preset: 'client',\r\n plugins: [],\r\n overwrite: true,\r\n presetConfig: {\r\n gqlTagName: 'gql'\r\n }\r\n }\r\n },\r\n};<\/code><\/pre>
export const GET_DIALOG = gql(`\r\n query GetDialog($dialogId: ID!) {\r\n dialog(id: $dialogId) {\r\n ...DialogFields\r\n }\r\n }\r\n`);<\/code><\/pre>
const config: CodegenConfig = {\r\n schema: CONFIG.apiHost,\r\n documents: ['src\/**\/*.{tsx,ts,js,jsx}', '!src\/gql\/__generated__\/*.ts'],\r\n generates: {\r\n '.\/src\/gql\/__generated__\/': {\r\n preset: 'client',\r\n plugins: [],\r\n overwrite: true,\r\n presetConfig: {\r\n gqlTagName: 'gql',\r\n fragmentMasking: false\r\n }\r\n }\r\n },\r\n};<\/code><\/pre>
\n
\/Library\/Preferences\/com.apple.networkextension.plist<\/pre>\n
\nДебажить приложения под Safari старых версий — это просто нереально...<\/p>\n