,

수집하는 data 가 없고 analytics 를 위해 access 만 하는 app (Model Dermatology - Wiki ; https://apps.apple.com/app/id1553068524)
 
 

GitHub - chemerisuk/cordova-plugin-firebase-analytics: Cordova plugin for Firebase Analytics

Cordova plugin for Firebase Analytics. Contribute to chemerisuk/cordova-plugin-firebase-analytics development by creating an account on GitHub.

github.com

 

다음과 같이 privacy manifest 를 작성해서 appstore 에 통과하였다.
 
 
 
    <privacy-manifest>
      <key>NSPrivacyAccessedAPITypes</key>
      <array>
        <dict>
          <key>NSPrivacyAccessedAPIType</key>
          <string>NSPrivacyAccessedAPICategoryUserDefaults</string>
          <key>NSPrivacyAccessedAPITypeReasons</key>
          <array>
            <string>CA92.1</string>
          </array>
        </dict>
      </array>
      <key>NSPrivacyCollectedDataTypes</key>
      <array>
        <dict>
          <key>NSPrivacyCollectedDataType</key>
          <string>NSPrivacyCollectedDataTypeUserID</string>
          <key>NSPrivacyCollectedDataTypeLinked</key>
          <true/>
          <key>NSPrivacyCollectedDataTypePurposes</key>
          <array>
            <string>NSPrivacyCollectedDataTypePurposeAnalytics</string>
          </array>
          <key>NSPrivacyCollectedDataTypeTracking</key>
          <false/>
        </dict>
        <dict>
          <key>NSPrivacyCollectedDataType</key>
          <string>NSPrivacyCollectedDataTypeDeviceID</string>
          <key>NSPrivacyCollectedDataTypeLinked</key>
          <true/>
          <key>NSPrivacyCollectedDataTypePurposes</key>
          <array>
            <string>NSPrivacyCollectedDataTypePurposeAnalytics</string>
          </array>
          <key>NSPrivacyCollectedDataTypeTracking</key>
          <true/>
        </dict>
        <dict>
          <key>NSPrivacyCollectedDataType</key>
          <string>NSPrivacyCollectedDataTypeCoarseLocation</string>
          <key>NSPrivacyCollectedDataTypeLinked</key>
          <true/>
          <key>NSPrivacyCollectedDataTypePurposes</key>
          <array>
            <string>NSPrivacyCollectedDataTypePurposeAnalytics</string>
          </array>
          <key>NSPrivacyCollectedDataTypeTracking</key>
          <false/>
        </dict>
        <dict>
          <key>NSPrivacyCollectedDataType</key>
          <string>NSPrivacyCollectedDataTypeProductInteraction</string>
          <key>NSPrivacyCollectedDataTypeLinked</key>
          <true/>
          <key>NSPrivacyCollectedDataTypePurposes</key>
          <array>
            <string>NSPrivacyCollectedDataTypePurposeAnalytics</string>
          </array>
          <key>NSPrivacyCollectedDataTypeTracking</key>
          <false/>
        </dict>
        <dict>
          <key>NSPrivacyCollectedDataType</key>
          <string>NSPrivacyCollectedDataTypePerformanceData</string>
          <key>NSPrivacyCollectedDataTypeLinked</key>
          <true/>
          <key>NSPrivacyCollectedDataTypePurposes</key>
          <array>
            <string>NSPrivacyCollectedDataTypePurposeAnalytics</string>
          </array>
          <key>NSPrivacyCollectedDataTypeTracking</key>
          <false/>
        </dict>
        <dict>
          <key>NSPrivacyCollectedDataType</key>
          <string>NSPrivacyCollectedDataTypeOtherDiagnosticData</string>
          <key>NSPrivacyCollectedDataTypeLinked</key>
          <true/>
          <key>NSPrivacyCollectedDataTypePurposes</key>
          <array>
            <string>NSPrivacyCollectedDataTypePurposeAnalytics</string>
          </array>
          <key>NSPrivacyCollectedDataTypeTracking</key>
          <false/>
        </dict>
        <dict>
          <key>NSPrivacyCollectedDataType</key>
          <string>NSPrivacyCollectedDataTypeOtherDataTypes</string>
          <key>NSPrivacyCollectedDataTypeLinked</key>
          <true/>
          <key>NSPrivacyCollectedDataTypePurposes</key>
          <array>
            <string>NSPrivacyCollectedDataTypePurposeAnalytics</string>
          </array>
          <key>NSPrivacyCollectedDataTypeTracking</key>
          <false/>
        </dict>
      </array>
      <key>NSPrivacyTracking</key>
      <false/>
      <key>NSPrivacyTrackingDomains</key>
      <array/>
    </privacy-manifest>
 
,

src = "구형 기기를 위한 icon"

foreground & background = "adaptive icon fore & back"

아이콘 생성은 https://romannurik.github.io/AndroidAssetStudio/icons-launcher.html  를 이용하면 된다.

구형/신형 기기에서 잘 동작하는것 확인함.

 

    <icon density="ldpi" src="res/icons/android/ldpi.png"/>

    <icon density="mdpi" src="res/android/icon/mipmap-mdpi/ic_launcher.png" foreground="res/android/icon/mipmap-mdpi/ic_launcher_adaptive_fore.png"  background="res/android/icon/mipmap-mdpi/ic_launcher_adaptive_back.png" />
    <icon density="hdpi" src="res/android/icon/mipmap-hdpi/ic_launcher.png" foreground="res/android/icon/mipmap-hdpi/ic_launcher_adaptive_fore.png" background="res/android/icon/mipmap-hdpi/ic_launcher_adaptive_back.png"/>
    <icon density="xhdpi" src="res/android/icon/mipmap-xhdpi/ic_launcher.png" foreground="res/android/icon/mipmap-xhdpi/ic_launcher_adaptive_fore.png" background="res/android/icon/mipmap-xhdpi/ic_launcher_adaptive_back.png"/>
    <icon density="xxhdpi" src="res/android/icon/mipmap-xxhdpi/ic_launcher.png" foreground="res/android/icon/mipmap-xxhdpi/ic_launcher_adaptive_fore.png" background="res/android/icon/mipmap-xxhdpi/ic_launcher_adaptive_back.png"/>
    <icon density="xxxhdpi" src="res/android/icon/mipmap-xxxhdpi/ic_launcher.png" foreground="res/android/icon/mipmap-xxxhdpi/ic_launcher_adaptive_fore.png" background="res/android/icon/mipmap-xxxhdpi/ic_launcher_adaptive_back.png"/>
,

임시 파일 삭제 프로그램으로 매우 유용하다.

실행하면 바로 appdata 등에 있는 임시 파일이 삭제된다. 

 

Temp File Cleaner.exe
0.15MB

 

,

root 로 로그인 이후에

su -

 

이후

nano /etc/polkit-1/localauthority/50-local.d/45-allow-colord.pkla

 

 

[Allow Colord all Users]
Identity=unix-user:*
Action=org.freedesktop.color-manager.create-device;org.freedesktop.color-manager.create-profile;org.freedesktop.color-manager.delete-device;org.freedesktop.color-manager.delete-profile;org.freedesktop.color-manager.modify-device;org.freedesktop.color-manager.modify-profile
ResultAny=no
ResultInactive=no
ResultActive=yes
,

website/app 를 전세계에 배포할때, 해외에서 느린 부분에 대한 고민이 있다. 여러시행착오와 많은 비용을 들인 끝에 아래가 제일 낫다는 결론. 수십시간과 수백만원 쓰고 내린 결론인데 좀 더 미리 찾아보았으면 덜 고생했을듯.

html = AWS CloudFront
api = AWS API gateway (REST API)
proxy = AWS (5$) + VULTR (6$ intel high-frequency) 

ip = AWS router 53 (multi-value proxing)

 

비슷한 효과를 내려면 해외 30개에 proxy 를 깔아야 한다.

,

우측 아래에 나타나는 DUR 팝업을 5분에 한번씩 체크해서 닫아줍니다. close.zip 을 풀고 close.exe 를 실행하면 됩니다.

close.zip
0.53MB

 

실행하면 우측 아래 트레이 영역에 방패가 보입니다.

DUR 뿐 아니라 이것도 덤으로 닫아 줍니다.

 

시작프로그램으로 등록하고 싶다면,

(1) close.exe 를 우측 클릭해서 "바탕 화면에 바로 가기 만들기" 를 해서 "close.exe 바로가기"를 하나 만듭니다.

(2) <윈도우키> + R 을 누르면 실행창이 아래처럼 띄워집니다. "shell:startup" 을 타이핑해서 시작프로그램 폴더를 엽니다.

(3) "close.exe 바로가기" 를 시작프로그램 폴더에 카피하면 윈도우 시작시 같이 실행이 됩니다. 

 

Reference>

https://learn.microsoft.com/ko-kr/windows/win32/api/winuser/nf-winuser-getshellwindow?redirectedfrom=MSDN

https://learn.microsoft.com/ko-kr/windows/win32/api/winuser/nf-winuser-getdesktopwindow?redirectedfrom=MSDN

https://learn.microsoft.com/ko-kr/windows/win32/api/winuser/nf-winuser-findwindowexa?redirectedfrom=MSDN

,

https://retropie.org.uk/

 

RetroPie

Retro-gaming on the Raspberry Pi

retropie.org.uk

 

Rasberrypie 에 retro 게임을 설치해주는 ROM 들을 모아 놓은듯.

'컴퓨터 이야기~ > 소프트웨어' 카테고리의 다른 글

API / WEB 해외 배포  (0) 2024.01.28
DUR 자동으로 닫기  (0) 2024.01.25
AWS Polly  (0) 2023.12.09
odp -> jpg + txt  (0) 2023.12.09
ffmpeg 로 더빙넣기.  (0) 2023.12.08
,

,

import uno
import os

def export_slide_to_jpg_and_notes(input_file, output_dir, slide_number):
    # Start LibreOffice process
    localContext = uno.getComponentContext()
    resolver = localContext.ServiceManager.createInstanceWithContext("cohttp://m.sun.star.bridge.UnoUrlResolver", localContext)
    context = resolver.resolve("uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext")
    desktop = context.ServiceManager.createInstanceWithContext("cohttp://m.sun.star.frame.Desktop", context)
    
    # Load the presentation file
    file_url = uno.systemPathToFileUrl(os.path.abspath(input_file))
    document = desktop.loadComponentFromURL(file_url, "_blank", 0, ())

    if document:
        try:
            # Get slide count
            slide_count = document.getDrawPages().getCount()
            
            if slide_number > slide_count or slide_number < 1:
                print("Invalid slide number")
            else:
                # Get the slide
                slide = document.getDrawPages().getByIndex(slide_number - 1)
                
                # Export the slide as JPG
                output_file = os.path.join(output_dir, f"slide_{slide_number}.jpg")
                export_slide_as_jpg(slide, output_file)
                
                # Extract slide notes
                notes_text = extract_slide_notes(slide)
                notes_output_file = os.path.join(output_dir, f"slide_{slide_number}_notes.txt")
                save_notes_to_file(notes_text, notes_output_file)
                print(f"Slide {slide_number} exported as {output_file}")
                print(f"Slide {slide_number} notes exported as {notes_output_file}")
        finally:
            document.close(True)

def export_slide_as_jpg(slide, output_file):
    export_props = (
        ("FilterName", "impress_jpg_Export"),
        ("URL", uno.systemPathToFileUrl(output_file)),
        ("Quality", 90),
    )
    slide.exportToURL(*export_props)

def extract_slide_notes(slide):
    notes = slide.getNotes()
    if notes:
        return notes.PresentationNotes
    return ""

def save_notes_to_file(notes_text, output_file):
    with open(output_file, "w", encoding="utf-8") as file:
        file.write(notes_text)

# Usage
input_presentation = "path_to_your_presentation.odp"  # Replace with your presentation file path
output_directory = "output_folder"  # Replace with your desired output directory
slide_to_export = 1  # Replace with the slide number you want to export

export_slide_to_jpg_and_notes(input_presentation, output_directory, slide_to_export)

'컴퓨터 이야기~ > 소프트웨어' 카테고리의 다른 글

Retro Pie / Rasberrypie 에 retro 게임  (0) 2023.12.28
AWS Polly  (0) 2023.12.09
ffmpeg 로 더빙넣기.  (0) 2023.12.08
AWS Polly API  (0) 2023.12.08
Sendmail error log 가 쌓이는 문제  (0) 2023.12.03
,