반응형
반응형

https://www.youtube.com/watch?v=ZiP1l7jlIIA&t=66s 

 

 


워즈니악이 스티브 잡스와 만든 회사 애플이 최신 스마트폰 아이폰15 를 공개했어요(영상). 외신을 통해서 공개될 것이라고 예상했던 것들이 그대로 공개되어서 약간은 김빠진 행사였어요. 

프리미엄 모델인 아이폰15 프로에 티타늄 바디가 적용됐고, 신형 A17 프로 반도체가 적용됐어요. 티타늄 바디 덕분에 아이폰은 더 고급스러워졌고, 가벼워졌고, 튼튼해졌어요. A17 프로 반도체로 인해 프리미엄 모델에서 경쟁사 대비 아이폰의 성능이 더 앞서갈 것 같다는 생각이 들었어요. 특히, 애플은 원신 임팩트를 만든 호요버스, 레지던트 이블을 만든 캡콤 등을 초대해서 아이폰15 프로가 모바일 게임을 위한 최고의 스마트폰임을 강조했죠. 

기본 모델인 아이폰15 의 경우, 기존의 아이폰14 프로가 그대로 올라왔다고 보면 될 정도로 큰 변화는 느껴지지 않았어요. 

애플의 XR 헤드셋 비전 프로에서 볼 수 있는 영상을 찍을 수 있는 '스페이셜 비디오'가 아이폰15 프로에 장착된 것도 중요한 변화. 비전 프로 생태계를 확장하고 애플의 미래를 여기에 걸겠다는 팀 쿡 애플 CEO 의 의지가 느껴졌습니다. 




애플은 탄소배출 0를 달성한 제품에 탄소중립(Carbon Neutral) 마크를 붙이기로 했어요. 첫 제품은 애플워치. 

애플이 하지 않은 것
그래서 오히려 이번에 공개될 수 있다고 했는데 하지 않은 것들이 중요하게 느껴졌습니다.

1. 애플은 가격을 올리지 않았어요.

계속적인 가격인상으로 스마트폰 고급화 전략을 취했던 애플이 아이폰과 애플워치 등 신제품의 가격을 올리지 않았어요.  

2. 애플은 울트라 모델을 공개하지 않았어요. 

더 고가에 더 좋은 성능의 울트라 모델을 공개할 것이라는 예상과 달리 울트라는 공개되지 않았어요.

3. 애플은 USB-C 케이블을 '모든' 제품에 적용했어요.

유럽에서의 규제때문에 싫어도 라이트닝케이블 대신 USB-C 케이블을 도입해야만했던 애플. 과감하게 새로운 아이폰15 에 모두 USB-C 케이블을 적용했고, 이건 아이폰과 맥에서도 동일하게 사용된다고 해요. 당초 일부 제품에만 적용할 것이라는 전망과 달리 모든 것에 적용. 

가격을 동결하고, USB-C 를 적용하고, 고성능 반도체로 게이머 고객을 공략하는 모든 애플의 움직임에서 저는 한가지를 느꼈어요. 바로 레드오션이 되어버린 스마트폰 시장에서 경쟁자들을 압도적으로 누르겠다는 의지! 

 

 

반응형
반응형

YouTube Music은 Android 및 iOS에서 더 많은 사용자에게 실시간 가사를 제공합니다.

 

Apple Music과 Spotify는 이미 유사한 기능을 갖추고 있으므로 YouTube Music이 경쟁사와 보조를 맞추는 모습이 보기 좋습니다.

 

https://www.zdnet.com/article/youtube-music-rolls-out-real-time-lyrics-on-android-and-ios-to-more-users/

 

YouTube Music rolls out real-time lyrics on Android and iOS to more users

Both Apple Music and Spotify already have similar features, so it's nice to see YouTube Music keep pace with its competition.

www.zdnet.com

 

 

반응형
반응형

7 Unnecessary VSCode Extensions You Should Uninstall Now

https://medium.com/coding-beauty/unnecessary-vscode-extensions-e72cb637f1cf

 

7 Unnecessary VSCode Extensions You Should Uninstall Now

These extensions provide functionality VSCode now has built-in. Removing them will speed up your editor and reduce bloat.

medium.com

반응형
반응형

Flutter and Clean Architecture(I)

https://aderibigbejesutoni860.medium.com/flutter-and-clean-architecture-i-be75e13608d4

 

Flutter and Clean Architecture(I)

Writing codes is a skill. You must agree with me that reading codes is another skill. Building an app that is scalable and has clean…

aderibigbejesutoni860.medium.com

 

Flutter and Clean Architecture (II)

https://aderibigbejesutoni860.medium.com/flutter-and-clean-architecture-ii-bf39113df82b

 

Flutter and Clean Architecture (II)

In our last article, we established that clean architecture is a software architectural pattern that provides a structured and modular way…

aderibigbejesutoni860.medium.com

반응형
반응형

https://medium.com/@anirudh.munipalli/10-powerful-css-properties-that-every-web-developer-must-know-e5d7f8f04e10

You probably never heard of them, but you will love them once you know.

CSS.

A language which is responsible for nearly every website in the world.

With so many properties, CSS is pretty huge. Finding good properties among them is like trying to read a binary file by yourself (pls don’t try it).

Which is why I have done that for you (the CSS, not the binary).

Here are 10 properties that you may not use much, or have never heard of, but will love once you know them.

Photo by Markus Spiske on Unsplash

Custom Scrollbars

Let’s change the width and color of the scroll bar. Also, let’s make it a little round as well.

Below are the parts of a scroll bar.

What the different parts of a scroll bar are | Image by Author

We use ::-webkit-scrollbar to change the properties.

/* Set the width of the scroll bar*/
::-webkit-scrollbar{
    width: 10px;
}
/* Change the track to a blue color and give a round border */
::-webkit-scrollbar-track{
    background-color: blue;
    border-radius: 10px;
}
/* Making the thumb (which shows how much you've scrolled) a gray color
  and making it round */
::-webkit-scrollbar-thumb{
    background: gray;
    border-radius: 10px
}
/* A dark gray color when hovered overn */
::-webkit-scrollbar-thumb:hover{
    background: darkgray;
}

The result of the code | Image by Author

Note: This is a non-standard property, and without -webkit-, it will not work.

Cursors

Change how the cursor looks when you mouse over an element.

/* An element with class 'first' */
.first{
    cursor: not-allowed;
}
/* An element with class 'second' */
.second{
    cursor: zoom-in;
}
/* An element with class 'third' */
.third{
    cursor: crosshair;
}

Result of the above code. The cursor on different elements | Image by Author

Scroll behavior

The scroll behavior can make a smooth scroll, to make transition from one section to another smoother.

Add this simple line and see the effect for yourself.

html{
  scroll-behavior:smooth;
}

Instead of simply snapping the page from one section to another, it scroll up/down to the section. See the effect here.

Accent color

Change the color for user interface, such as form controls and checkboxes.

Accent color demo | Image by Author

See how the color of the check box and radio button is blue, instead of the default (and boring) gray.

input{
  accent-color: blue;
}

That’s all. You can use selectors to make some inputs blue, some red and some green.

And this doesn’t change the color of the text, so you can mess around with the colors and experiment. The UI color is under our control.

Aspect Ratio

When building responsive components, constantly keeping check on the height and width might be a headache, as you have to maintain aspect ratios. Videos, and Images may appear stretched sometimes.

That is why we can use the aspect ratio property. Once you set the aspect ratio value, and then set width, the height is set automatically. Or the other way around.

/* An elment with class example */
.example{
    /* Setting the aspect ratio */
    aspect-ratio: 1 / .25;
    /* Upon setting width, height is automatically set */
    width: 200px;
    /* Border is not required, but it is here just to see the effect. */
    border: solid black 1px;
}

Now that we set the width, we will get the height equal to 125 px automatically, to maintain the aspect ratio. This is very useful for responsive behavior.

The result when the CSS is applied to the HTML | Image by Author

Box Reflect

This allows us to create reflections of an component below it.

For this demo, I used an SVG wave image, that I got using this website.

/* An element with class name 'example */
.example{
    /* The reflection will appear below. Other possible values are above | left | right */
    -webkit-box-reflect: below;
}

This creates a reflection below the SVG.

Box reflection below the image | Image by Author

We can also offset the reflection a bit.

/* An element with class name 'example */
.example{
    /* The reflection will appear below. Other possible values are above | left | right */
    -webkit-box-reflect: below 20px;
}

The reflection with offset | Image by Author

Also, I would like it to fade out a bit. We can use a gradient for that.

/* An element with class name 'example */
.example{
    /* The reflection will appear below. Other possible values are above | left | right */
    -webkit-box-reflect: below 0px linear-gradient(to bottom, rgba(0,0,0,0), rgba(0,0,0,.5));
}

This gives a nice reflection.

The resulting reflection | Image by author

This is a non-standard property supported by most major browsers (except Firefox).

Check if browser supports a property

How to check if a particular property is supported in CSS.

/* Check if browser supports display: flex */
@supports (display: flex){
    /* If it does, set the display to flex */
    div{
        display: flex
    }
}

While the above example will always be supported by major browsers, non-standard properties (such as custom scroll bars and box-reflections) might not be supported by some.

Remember to put the condition in () parenthesis.

If you put the not keyword, then it will work if the property is not supported.

@supports not (display: flex){/* If not supported *}

Masks

You can use an Image mask in CSS.

/* An object with class example */
.example{
    /* Setting the mask from a URL */
    -webkit-mask: url(YOUR URL);
    mask: url(YOUR URL);
}

In the mask image, the white represents the mask and black is the area to be clipped.

Filter

You can add amazing filters to your images using CSS. Filters are something we see in every photo sharing app, and now, let’s see how easy they are to implement

img{
    filter: /*YOUR VALUE */;
}

There are many filters available. You can blur, brighten and saturate filters. You can make the image grayscale, change it’s opacity, invert the colors, and more.

The normal image (left), blurred image(middle) and high contrast image(right) | Image by Author | Photo of grass by Author

A brightened image (left), a grayscale image (middle) and a hue rotated image (right) | Image by Author | Photo of grass by Author

See this page for more details.

Backdrop effects

You can add a good looking filter to the area behind an image using backdrop-filter.

All the properties of filter are available here. This is in other words just a filter to apply to the background.

<div class="image">
    <div class="effect">
        backdrop-filter: blur(5px);
    </div>
</div>

<style>
.image{
    background-image: url(YOUR URL);
    background-size: cover;
    width: 400px;
    height: 400px;
    display: flex;
    align-items: center;
    justify-content: center;
}
.effect{
    font-size: x-large;
    color: white;
    font-weight: 800;
    background-color: rgba(255, 255, 255, .3);
    backdrop-filter: blur(5px);
    padding: 20px;
}
</style>

This makes an effect like this:

Result of the code | Image by Author

And with that, you now know 10 new properties of CSS. You can make your website look very professional.

If you like this article, show your support by:

  1. Clapping
  2. Following for content about CSS, HTML, JS, Python and AI.
  3. Responding to this article telling your favorite property.
  4. Or do all of the above 3 😃
반응형
반응형

https://076923.github.io/posts/Python-tkinter-1/

 

Python tkinter 강좌 : 제 1강 - GUI 생성

tkinter

076923.github.io

""" Python tkinter 강좌  : https://076923.github.io/posts/Python-tkinter-2/

    Label, Button, Entry, ListBox, CheckButton 
"""
import tkinter

window=tkinter.Tk()
window.title("KIM HONG WAN")
window.geometry("640x400+100+100")
window.resizable(False, True) # 좌우, 상하

label0=tkinter.Label(window, text="파이썬", width=10, height=5, fg="red", relief="solid")
label0.pack()


count = 0

def countUP():
    global count
    count +=1
    label.config(text=str(count))

# Label을 이용하여 삽입한 이미지나 도표, 그림 등에 사용되는 주석문을 생성할 수 있습니다.
label = tkinter.Label(window, text="0")
label.pack()

# Button을 이용하여 메서드 또는 함수 등을 실행시키기 위한 단추를 생성할 수 있습니다.
button = tkinter.Button(window, overrelief="solid", width=15, command=countUP, repeatdelay=1000, repeatinterval=100)
button.pack()


label2 = tkinter.Label(window, text="0")
label2.pack()

def calc(event):
    label2.config(text="결과="+str(eval(entry.get())))

# Entry을 이용하여 텍스트를 입력받거나 출력하기 위한 기입창을 생성할 수 있습니다
entry=tkinter.Entry(window)
entry.bind("<Return>", calc)
entry.pack()


# Listbox을 이용하여 목록을 불러와 추가, 제거 또는 선택하기 위한 리스트박스를 생성할 수 있습니다
listbox = tkinter.Listbox(window, selectmode='extended', height=0)
listbox.insert(0, "1번")
listbox.insert(1, "2번")
listbox.insert(2, "2번")
listbox.insert(3, "2번")
listbox.insert(4, "3번")

listbox.delete(1, 2)

listbox.insert(1, "1-1번")

listbox.pack()

# Checkbutton을 이용하여 옵션 등을 다중 선택하기 위한 체크버튼을 생성할 수 있습니다.
def flash():
    checkbutton1.flash()

CheckVariety_1=tkinter.IntVar()
CheckVariety_2=tkinter.IntVar()

checkbutton1=tkinter.Checkbutton(window, text="O", variable=CheckVariety_1, activebackground="blue")
checkbutton2=tkinter.Checkbutton(window, text="△", variable=CheckVariety_2)
checkbutton3=tkinter.Checkbutton(window, text="X", variable=CheckVariety_2, command=flash)

checkbutton1.pack()
checkbutton2.pack()
checkbutton3.pack()


# Radiobutton을 이용하여 옵션 등을 단일 선택하기 위한 라디오버튼을 생성할 수 있습니다.
def check():
    label.config(text= "RadioVariety_1 = " + str(RadioVariety_1.get()) + "\n" +
                       "RadioVariety_2 = " + str(RadioVariety_2.get()) + "\n\n" +
                       "Total = "          + str(RadioVariety_1.get() + RadioVariety_2.get()))

RadioVariety_1=tkinter.IntVar()
RadioVariety_2=tkinter.IntVar()

radio1=tkinter.Radiobutton(window, text="1번", value=3, variable=RadioVariety_1, command=check)
radio1.pack()

radio2=tkinter.Radiobutton(window, text="2번(1번)", value=3, variable=RadioVariety_1, command=check)
radio2.pack()

radio3=tkinter.Radiobutton(window, text="3번", value=9, variable=RadioVariety_1, command=check)
radio3.pack()

label=tkinter.Label(window, text="None", height=5)
label.pack()

radio4=tkinter.Radiobutton(window, text="4번", value=12, variable=RadioVariety_2, command=check)
radio4.pack()

radio5=tkinter.Radiobutton(window, text="5번", value=15, variable=RadioVariety_2, command=check)
radio5.pack()


# Menu을 이용하여 자주 사용하는 기능 등을 다양한 선택사항으로 나누는 메뉴을 생성할 수 있습니다.
def close():
    window.quit()
    window.destroy()

menubar=tkinter.Menu(window)

menu_1=tkinter.Menu(menubar, tearoff=0)
menu_1.add_command(label="하위 메뉴 1-1")
menu_1.add_command(label="하위 메뉴 1-2")
menu_1.add_separator()
menu_1.add_command(label="하위 메뉴 1-3", command=close)
menubar.add_cascade(label="상위 메뉴 1", menu=menu_1)

menu_2=tkinter.Menu(menubar, tearoff=0, selectcolor="red")
menu_2.add_radiobutton(label="하위 메뉴 2-1", state="disable")
menu_2.add_radiobutton(label="하위 메뉴 2-2")
menu_2.add_radiobutton(label="하위 메뉴 2-3")
menubar.add_cascade(label="상위 메뉴 2", menu=menu_2)

menu_3=tkinter.Menu(menubar, tearoff=0)
menu_3.add_checkbutton(label="하위 메뉴 3-1")
menu_3.add_checkbutton(label="하위 메뉴 3-2")
menubar.add_cascade(label="상위 메뉴 3", menu=menu_3)

window.config(menu=menubar)


window.mainloop()



print("Window Close")
반응형

+ Recent posts