teleren/devto huggingface dataset:
25- Personalize QGIS Icon using PyQGIS
Tags: programming, python, pyqgis
Published: 2023-03-27 22:15:26

--- series: A beginner's guide to using Python with QGIS ---
Learn how to customize the QGIS icon using PyQGIS with this step-by-step guide. Follow along as we show you how to download the icon image, import the necessary module, specify the icon name and directory, and create an instance of the QIcon class. You'll also learn how to set the QGIS window icon to the QIcon instance using Python. Whether you're a GIS professional or a Python developer, this tutorial will help you add a personal touch to your QGIS application.

Download the [**QGIS icon image**](https://github.com/Azad77/Python_qgis/blob/main/Data/qgis_orange.png).

Import the `os` module:

```python
import os
```

Specify the icon name, directory, and file path:

```python
icon = 'qgis_orange.png'
data_dir = os.path.join(os.path.expanduser('~'), 'D://', 'Python_QGIS')
icon_path = os.path.join(data_dir, icon)
```

Create an instance of the QIcon class:

```python
icon = QIcon(icon_path)
```

Set the QGIS window icon to the QIcon instance:

```python
iface.mainWindow().setWindowIcon(icon)
```

Here's the overall code:

```python
# import os module
import os

# specify the name of the icon
icon = 'qgis_orange.png'

# specify the data directory where the icon file is stored
data_dir = os.path.join(os.path.expanduser('~'), 'D://', 'Python_QGIS')

# create the path to the icon file
icon_path = os.path.join(data_dir, icon)

# create an instance of the QIcon class using the icon path
icon = QIcon(icon_path)

# set the QGIS window icon to the QIcon instance
iface.mainWindow().setWindowIcon(icon)
```

In conclusion, customizing the QGIS icon using PyQGIS is a straightforward process that can help add a personal touch to your QGIS application. By following the step-by-step guide provided in this article, you can download the icon image, import the necessary module, specify the icon name and directory, and create an instance of the QIcon class. You'll also learn how to set the QGIS window icon to the QIcon instance using Python. Whether you're a GIS professional or a Python developer, this tutorial can be a valuable resource to help you customize your QGIS icon.

> If you like the content, please [SUBSCRIBE](https://www.youtube.com/channel/UCpbWlHEqBSnJb6i4UemXQpA?sub_confirmation=1) to my channel for the future content
ยูฟ่าเบท
Published: 2023-03-27 21:22:59

การพนันดึงดูดผู้คนจำนวนมากเนื่องจากความสามารถในการให้ผลกำไรที่ไร้ขีดจำกัด สำหรับมือสมัครเล่น มันไม่ง่ายเลยที่จะทำเงินเล็กน้อยด้วยการพนัน แต่เขาจะปลดทุกอย่างที่มี คาสิโนออนไลน์ที่มีเทคนิคการเดิมพันเป็นวิธีที่สะดวกที่สุดในการรักษาเงินของคุณและเพิ่มความเป็นไปได้ในการพนันของคุณเพื่อรับมากขึ้นและพิเศษ เงินสด.
**_[ยูฟ่าเบท](https://ufabet345.io/)_**
มีอันตรายมากมายจากการเดิมพันคาสิโนออนไลน์สำหรับผู้ที่ยังใหม่กับการเดิมพันออนไลน์

การเดิมพันคาสิโนออนไลน์เป็นช่องทางกิจกรรมสำหรับมนุษย์จำนวนมากทั่วโลก ดังนั้นมันจึงได้รับการยอมรับทางกลไกเนื่องจากศักยภาพในการหัวเราะและความสนุกสนานของมนุษย์ นอกจากนี้ยังเป็นเรื่องปกติสำหรับนักธุรกิจที่ยุ่งมาก

คุณต้องระมัดระวังอย่างมากแม้ในขณะที่ทำการเดิมพันออนไลน์ เนื่องจากเมื่อคุณเลือกเดิมพันคาสิโนออนไลน์ คุณอาจไม่สามารถเห็นบุ๊คมาร์คหรือเจ้ามือการพนันได้อีกต่อไป ดังนั้นควรระมัดระวังให้มากในขณะเดียวกับการเลือกคาสิโนออนไลน์สำหรับเล่นแพลตฟอร์ม คาสิโนออนไลน์มีการเดิมพันรวมเงิน ดังนั้นการวิจัยเกี่ยวกับคาสิโนออนไลน์ที่คุณตัดสินใจเล่นการพนันจึงสำคัญมาก ในความเป็นจริง ขอแนะนำโดยการใช้นักพนันที่มีประสบการณ์ซึ่งคุณควรเล่นอย่างต่อเนื่องในคาสิโนออนไลน์ที่เป็นที่รู้จักหรือสนับสนุน มีบางครั้งที่พบว่า - ตัวอย่างแรก นักพนันตั้งใจว่าไม่ว่าจะเล่นพนันอย่างไรก็ไม่มีทางชนะได้เลย ตัวอย่างที่ 2 นักพนันลงทุนเงินก้อนและได้เงินเดิมพันมาแต่พอถึงเวลา มาให้เขาได้รับคือการชนะ .... เว็บไซต์คาสิโนออนไลน์หายไปในชั่วข้ามคืน ตอนนี้ฉันเห็นด้วยกับคุณเข้าใจถึงความสำคัญของการเลือกคาสิโนออนไลน์ที่เชื่อถือได้

หากคุณไม่สามารถหาใครก็ได้ที่สามารถแนะนำคุณได้ ให้มองหาเว็บไซต์ประเมินคาสิโน มีเว็บไซต์ประเมินคาสิโนเพียงพอ ซึ่งคุณอาจพบการประเมินโดยละเอียดของคาสิโนที่มีตราสินค้าและเป็นที่รู้จักบางแห่ง ผ่านการประเมินและค้นพบสิ่งที่เหมาะกับความต้องการของคุณในระดับเฟิร์สคลาส

เมื่อคุณทำการเดิมพันออนไลน์ อย่าไปเดิมพันด้วยปริมาณมาก ในเวลาที่เริ่มการเดาให้มองหาโต๊ะเดิมพันต่ำ หากคุณเดาได้ต่ำ คุณจะมีความเป็นไปได้มากมายที่จะเดิมพัน แต่ในกรณีที่คุณย้ายไปหาคนจำนวนมาก คุณจะมีโอกาสน้อยมาก

กำหนดช่วงราคาทุกวันเพื่อหลีกเลี่ยงความหายนะทางการเงิน หากคุณเดาโดยไม่ได้วางแผนอย่างถูกต้อง คุณอาจจบลงด้วยหายนะทางการเงินในไม่ช้า ยังตั้งเป้าหมายที่จะชนะ หากคุณบรรลุเป้าหมายแล้วให้หยุดและบันทึกการพักผ่อนในวันถัดไป อย่าหยุดเดิมพันเพราะเมื่อสิ้นสุดวัน คุณจะพบว่าคุณไม่มีเงินหรือเงินรางวัลที่จะนำกลับบ้าน

มีบางวันที่คุณพบว่าไม่ว่าคุณจะเล่นอะไรก็ตาม ในระยะยาวคุณก็จะคลายออก ในแต่ละวัน มีประโยชน์อย่างมากในการป้องกันการรั่วซึมและบำรุงรักษาให้มากขึ้นสำหรับวันพรุ่งนี้ บางคนเมื่อพวกเขาพบว่าพวกเขาไม่สามารถชนะเกมเดียวได้อีกต่อไป พวกเขายังคงเดิมพันกับวิดีโอเกมต่างๆ และท้ายที่สุดพวกเขาก็จบลงด้วยความยุ่งเหยิง

ยอมรับการเดิมพันคาสิโนออนไลน์เพื่อเป็นเทคนิคในการทำให้สดชื่น เล่นอย่างขอบคุณและดูว่าคุณจะชนะได้อย่างไร อย่ากังวลมากหากคุณแพ้ เพียงแค่ทำใจให้สบายและสัมผัสกับกีฬา
Day 722 : Step by Step
Tags: hiphop, code, coding, lifelongdev
Published: 2023-03-27 21:59:38

_liner notes_:
- Saturday : Did the radio show. Had a really good time! After getting the show ready and uploaded, I stayed up pretty late working on my side project. The recording of this week's show is at https://kNOwBETTERHIPHOP.com

![Radio show episode image of an illustration showing what not to do with your headphones with the words Mar 25th 2023 I'm shocked!](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pwpnwgzryq1nzodrr2ka.jpg)

- Sunday : Did my study sessions (https://untilit.works) and got a bunch of stuff done. Did some more work on my side project. Ended the night by watching "Trigun: Stampede" (I think this was the final episode and wow!) and a couple of episodes of "Spy x Family".

- Professional : Had a couple of meetings to start the week off. Met with a team member to talk about a demo application we were working on. Spoke through some changes and I went off to implement them and submit the final project. Also, helped out with a community question. After all that I worked on my proof of concept project using the Web Components I made. Made some updates to the Web Components based on how they fit into an actual application. For me, the best way to test out a Web Component is to be able to use it in a full application. Got quite a bit done.

- Personal : So my Chromebook worked out for the radio show, so I can stop bringing my heavy laptop to the station. Also used the new headphones I got and they worked pretty well. I haven't really gotten a chance to use the headphones much since then.

![A series of Mount Everest, Tibet mountain ranges going into the distance with brown colored to snow topped mountains under a blue sky with a little bit of clouds.](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/66z5seu5ztl36okbh7id.jpg)

I think I figured out how I want to reduce the number of calls that will be needed in my side project. It includes using the browser's local storage. So I'll be working that out. I also want to try out the View Transitions API. There's a blog post that is almost a step by step example of getting it working. Going to watch the final episode of season 1 for "Spy x Family" (I think season 2 drops in October) and the new "Vinland Saga". I also want to go through some tracks for the radio show.

Have a great night!

peace piece
Dwane / conshus
https://dwane.io / https://HIPHOPandCODE.com
{% youtube KI6voHh69B8 %}
24- Improve Your QGIS Toolbar with a Button Showing the Current Time
Tags: programming, python, pyqgis
Published: 2023-03-27 21:54:17

--- series: A beginner's guide to using Python with QGIS ---
Learn how to enhance your PyQGIS toolbar with a time button by following this step-by-step guide. With the help of necessary modules and code, you can create a QGIS toolbar icon that displays the current time when clicked. Download the time icon and define the path to the icon to get started with this tutorial. Follow along with the instructions to create your own time button and upgrade your PyQGIS toolbar.

First, download the time icon [**image**](https://github.com/Azad77/Python_qgis/blob/main/Data/time.png).

Then, import the necessary modules:

```python
import os
import pytz
from datetime import datetime
```

Next, define the path to the icon:

```python
icon = 'time.png'
data_dir = os.path.join(os.path.expanduser('~'), 'D://', 'Python_QGIS')
icon_path = os.path.join(data_dir, icon)
```

Next, define Baghdad local time by creating the "WhatTime" function:

```python
def WhatTime():
    tz_Ba = pytz.timezone('Asia/Baghdad') 
    now = datetime.now(tz_Ba)
    current_time = now.strftime("%H:%M:%S")
    iface.messageBar().pushInfo('Baghdad Time', current_time)
```

Finally, create a QGIS toolbar icon that displays the current time when clicked:

```python
action = QAction('What time is it?')
action.triggered.connect(WhatTime)
action.setIcon(QIcon(icon_path))
iface.addToolBarIcon(action)
```

Here's the overall code:

```python
# Import the necessary modules:
import os
import pytz
from datetime import datetime

Define the path to the icon:
icon = 'time.png'
data_dir = os.path.join(os.path.expanduser('~'), 'D://', 'Python_QGIS')
icon_path = os.path.join(data_dir, icon)

# Define Baghdad local time
def WhatTime():
    tz_Ba = pytz.timezone('Asia/Baghdad') 
    now = datetime.now(tz_Ba)
    current_time = now.strftime("%H:%M:%S")
    iface.messageBar().pushInfo('Baghdad Time', current_time)

# Create a QGIS toolbar icon that displays the current time when clicked:    
action = QAction('What time is it?')
action.triggered.connect(WhatTime)
action.setIcon(QIcon(icon_path))
iface.addToolBarIcon(action)
```

In conclusion, this step-by-step guide provides a clear and concise tutorial on how to enhance your PyQGIS toolbar with a time button. By following the instructions and using the necessary modules and code, users can create a QGIS toolbar icon that displays the current time when clicked. This feature can be useful for those who need to keep track of time while working with PyQGIS. Overall, this tutorial is a useful resource for those looking to upgrade their PyQGIS toolbar.

> If you like the content, please [SUBSCRIBE](https://www.youtube.com/channel/UCpbWlHEqBSnJb6i4UemXQpA?sub_confirmation=1) to my channel for the future content
how to pass dynamically text at pseudo class in tailwind css - after:content-[?] in react js inside .map
Tags: webdev, javascript, react, tailwindcss
Published: 2023-03-27 20:51:36

```js
const data = [
    "Web Design",
    "Development",
    "Illustration",
    "Product Design",
    "Social Media",
];
```

---


```js
<ul className='flex flex-col gap-5 text-[85px]'>
{
  data.map(item =>
    <li
      key={item}
      after-dynamic-value={item}                <-- for linking...
      className={`cursor-pointer relative
      after:content-[attr(after-dynamic-value)] <-- linking here...
      after:absolute
      after:right-0
      after:text-red-200 `}
    >

      {item}

    </li>
  )
}
</ul>
```
Fix for css grid item Overflow
Tags: css, html, frontend, beginners
Published: 2023-03-27 20:38:35

## The problem

I recently ran into an interesting problem when creating scroll containers. I've created a ton of scroll containers but for some reason, I couldn't get this to work. This usually happens when we have a scroll container nested in a grid item.

{% codepen https://codepen.io/emmahchinonso/pen/poOGxKG  %}

Even though we have `overflow: auto` set on our flex layout, it doesn't seem to work, our layout still looks broken. This is because the minimum content size of a grid item is `auto`. This means a grid item can expand its width to contain its children, which in this case is our scrolling container.

Minimum content size can be said to be the `min-content` keyword. MDN says `the min-content sizing keyword represents the intrinsic minimum width of the content. For text content this means that the content will take all soft-wrapping opportunities, becoming as small as the longest word`. The `min-content` here is controlled by min-width. 

If we give a div `min-width: 400px` and also give it `width: min-content` we discover that the size(width) of the div is reduced to our `min-width`. Let's look at the UI again.

{% codepen https://codepen.io/emmahchinonso/pen/poOGxKG  %}

The minimum content size, `min-content` keyword and the `min-width` property in a way describes the same thing. We can now say that by default grid items have `min-width` of auto, `min-width` of auto on a grid item basically means be as wide as your children. 

There are a couple of ways to fix this overflowing grid item problem, the first and second one involves adding a fixed minimum content size.

1. use a `min-width:0` on the grid-item, this tells it to start from 0 and grow till it's max-content(making use of any soft-wrapping opportunities) i.e the container in this case.

2. use `minmax(0, 1fr) minmax(0, 1fr)` not `1fr 1fr` when defining grid columns.

3. add an overflow property to the grid item with a value that is not `visible`.

You can play around with the codepen to get a better feeling for this.

{% codepen https://codepen.io/emmahchinonso/pen/ExeMKwB %}

After using one of the fixes, try changing the `min-width` property of this selector `.flex > *` to `width`. The flex-shrink property kicks in now because the parent of our flex-layout now has a limit.

This brings us to a close on this issue, thanks for reading. I'm always open to suggestions, please leave them in the comments.😊
Binance got sued !!!
Tags: crypto, security, bitcoin, markets
Published: 2023-03-27 20:03:16

Oh boy, the Commodity Futures Trading Commission just threw some major shade at Binance and its CEO Changpeng “CZ” Zhao. They sued them in federal court and the whole crypto world is shook.

Bitcoin and Ether took a tumble, down about 3% each. BNB, the cryptocurrency powering Binance’s BNB chain, was down even more, more than 6%. It’s like the CFTC put a hole in their ship and they’re sinking fast.

Other crypto-related stocks were also hit hard. Coinbase fell over 10% and MicroStrategy, the Bitcoin “hodling” company, was down more than 7%. Even mining companies like Marathon Digital Holdings and Riot Blockchain saw shares drop about 8%.

The CFTC is alleging that Binance “disregarded applicable federal laws” while catering to its U.S. customers. They claim Binance didn’t implement proper know-your-customer and anti-money-laundering procedures, and even helped U.S.-based customers “evade the compliance controls Binance purported to implement to prevent and detect violations of U.S. Law.” Ouch, that’s gotta hurt.

In response, CZ posted a tweet with just the number “4.” I guess he’s trying to tell us to ignore the fear, uncertainty, and doubt, but it’s hard to ignore when your ship is sinking faster than the Titanic. This post was create by https://lzomedia.com
useEffect Hook with simple example
Published: 2023-03-27 19:39:53

In this example, we define a component called Example that uses the useEffect hook.

First, we define a state variable count using the useState hook.

Inside the useEffect hook, we update the title of the document using the document.title property. The useEffect hook takes a function as its first argument that will be called after the component has been rendered. In this case, we're updating the document title to reflect the current value of count. We also pass an array [count] as the second argument to useEffect, which tells React to only re-run the effect when the count state variable has changed.

Finally, we render the current value of count using an HTML paragraph element and a button that updates the count state variable when clicked.

This simple example demonstrates how we can use the useEffect hook in a React component to perform side effects, such as updating the title of the document based on the current state of the component.

```
import React, { useState, useEffect } from 'react';

function Example() {
  const [count, setCount] = useState(0);

  useEffect(() => {
    document.title = `You clicked ${count} times`;
  }, [count]);

  const handleButtonClick = () => {
    setCount(count + 1);
  };

  return (
    <div>
      <p>You clicked {count} times</p>
      <button onClick={handleButtonClick}>Click me</button>
    </div>
  );
}

```
Advisory locks (рекомендательные блокировки)
Tags: rails, ruby, postgres
Published: 2023-03-27 19:38:15

_не путать с другими более оптимистичными или менее пессимистичными блокировками_

Возможно у вас в проекте уже используются эти [локи](https://github.com/ClosureTree/with_advisory_lock), но вы никогда не задумывались, что это за локи, как они работают и, самое важное, как НЕ работают. 
Эта блокировка в качестве аргумента принимает строку, которая будет служить уникальным ключом.

## Начнем с того, что лок делать НЕ умеет

**1. Этот лок не блокирует данные, записи, таблицы, которые вы модифицируете внутри блока кода**
Если у вас есть вот такой кусочек кода, который выполняется в потоке А
```ruby
User.with_advisory_lock("updating_users_#{users.ids.join}") do
  users.where(role: "admin").update(role: "user")
end
```
и вот такой кусочек кода, который выполняется в потоке Б,
```ruby
User.join(:permisson).where(permissions: { update: true }).update(role: "admin")
```
то поток Б может модифицировать данные, которые модифицирует поток А, и наоборот.

**2. Нельзя заменить транзакцию локом.**
Рекомендательные блокировки (в постгресе) так вообще игнорируют границы транзакции если запрос на уровне сессии. Чтобы получить эффект "все или ничего" нужно использовать транзакцию, даже если используешь и лок. Например, вот так:

```ruby
User.transaction do
  User.with_advisory_lock("updating_user_#{user.id}") do
    user.update(role: "admin")
    user.user_organization.first.update_periods
  end
end
```

**3. В общем случае, ключ для блокировок разных частей кода должен быть разным.**
Вот два метода, и оба используют блокировку с одним и тем же ключом. Да, смотрится очень эффектно, но смысла в этом мало, потому как методы абсолютно независимые. Нет никакого резона, чтобы метод "update" ждал, пока метод "check" закончит свою работу, даже если он выполняется параллельно. И наоборот. 


```ruby
def update(users)
  with_user_lock do
    users.where(role: "admin").update(role: "user")
  end
end

def check(users)
  with_user_lock do
    users.all? { _1.task_completed? }
  end
end

def with_user_lock(user, &block)
  User.with_advisory_lock("updating_user_#{user.id}", &block)
end
```


Конечно, есть исключения и можно придумать сценарий, когда один и тот же лок в разных методах имеет смысл, но вы должны четко понимать, что вы делаете и зачем.

## Так а зачем же тогда нужен этот лок?

Эта блокировка отлично подходит для контроля конкурентных запросов на уровне приложения (Application-level Concurrency Control). Это мьютекс, который используется для того, чтобы гарантировать, что два разных процесса, которые исполняют ОДИН и ТОТ ЖЕ код, не выполняют этот код одновременно.

```ruby
class UpdateRoleJob < ApplicationJob
  def perform(user)
    User.with_advisory_lock("updating_user_#{user.id}") do
      user.update(role: "admin")
    end
  end
end
```
Если по какой-то причине у вас в очереди появилось две задачи для одного и того же пользователя, и если случилось так, что 2 разных воркера начнут обрабатывать эти две задачи, то вы можете быть уверены, что только один из них будет выполняться в данный момент, а второй будет ждать, пока первый закончит свою работу.
Looking for an ambigramatic fonts
Published: 2023-03-27 19:28:31

Hi guys!
I am looking for new fonts for my project - [ambigram generator](https://www.ambigramania.com/)
I found three free fonts that are not copyrighted by anyone (I hope), but this is much less than the competition.
Hiring a designer to create fonts is too expensive.
I would be grateful for any help or hints)

Sorry for mistakes - google translate:)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sd61o3e5897isb0ww0da.gif)
Pokémon JavaScript Game Tutorial with Kaboom.js
Tags: javascript, gamedev, kaboomjs, tutorial
Published: 2023-03-27 19:15:44


![Thumbnail for the tutorial](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ht6wumne8sihtktkcmuz.png)

I've been learning how to make games using JavaScript and a very easy to use game making library called Kaboomjs. 

I've decided to make this tutorial to share what I learned. We're going to build a Pokemon-like game.


![gameplay showcase gif](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fembfhuhey9gt5qo9hxz.gif)


Watch the tutorial down below. If you enjoy my content, subscribe to my YouTube to help my channel grow.

{% youtube zo3crHnFGho %}
Desi Login Page
Tags: codepen, css, webdev, beginners
Published: 2023-03-27 19:15:43

<p>"Check out my new login page! It has an Indian-inspired design with vibrant colors, intricate patterns, and beautiful desi font. Created using pure HTML and CSS, it's both visually appealing and functional. Login now to experience the desi charm!"</p>

{% codepen https://codepen.io/FaltuCoderz/pen/NWLJdvJ %}

Hi everyone,

I'm excited to share my project in web development - a login page that I created using HTML and CSS. As a beginner in this field, I'm open to feedback and suggestions from the community on how I can improve my work.

My login page features a simple design with Indian or Desi elements, including Indian fonts. I aimed to create a page that reflects my cultural background and personal style while still being easy to use and navigate.

I'm looking forward to hearing your thoughts on my project and learning from your feedback. Thank you in advance for your time and help in improving my skills in web development.

Best regards,

Arpit Singh :)