• 0 Posts
  • 29 Comments
Joined 2 years ago
cake
Cake day: July 17th, 2024

help-circle



  • I don’t know what these people are doing who seem to claim it’s wonderful. Every single time I have tried to use one, it’s been completely clueless about the problem and wastes my time producing slop. I almost want to keep my code closed source because of how awful it is at generating anything. Maybe they’re just doing very simple web design or something, I don’t know

    I even have started to hate Google and felt like their search engine is becoming very bad. Yandex has been returning more results and Google feels censored and replaced by generative AI answers.



  • Sometimes it’s specific to the application. As an example, yt-dlp is redistributed by Canonical, and they usually maintain stable packages, but their versions seem to lag like 6 months. This might be related to their desire for stability, or maybe just align to their release cycle. I don’t know.

    The issue is that yt-dlp needs to be updated more frequently because websites break their methods of downloading, so the version that follows the latest version seems to work better.

    I don’t think using PPA’s is usually recommended, (like in the photo) so I think I would recommend flatpaks first if the developer of the application maintains one themselves. (and you want to follow later releases.) Though, the first time I had to use flatseal to fix an application, I felt like flathub was a failed platform.






  • I might add one for scaling. I just don’t use it as frequently as trying to meet a file size limit. The scaling is also much easier to remember

    ffmpeg -i  in.mp4 -vf "scale=600:-1" -an out.mp4
    

    It does get complicated though, when scaling many videos and images, I’ve used something like the following in the past

    find .  -exec ffmpeg -i {} -vf "scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:-1:-1:color=black" {}.mp4 \;
    

    Those were the only two that showed up when I typed history | grep scale.

    after commenting, I also added a new video file resizer.

    It works significantly better than the one I previously posted. It’s also copied from stackoverflow.

    bitrate="$(awk "BEGIN {print int($2 * 1024 * 1024 * 8 / $(ffprobe \
        -v error \
        -show_entries format=duration \
        -of default=noprint_wrappers=1:nokey=1 \
        "$1" \
    ) / 1000)}")k"
    ffmpeg \
        -y \
        -i "$1" \
        -c:v libx264 \
        -preset medium \
        -b:v $bitrate \
        -pass 1 \
        -an \
        -f mp4 \
        /dev/null \
    && \
    ffmpeg \
        -i "$1" \
        -c:v libx264 \
        -preset medium \
        -b:v $bitrate \
        -pass 2 \
        -an \
        "${1%.*}-$2mB.mp4"
    

  • The version I have was copied from stackoverflow. It doesn’t work very well, it makes a rough estimate to get the video file size under the set value. As an example

    resize video.mp4 10
    

    Which then resizes the video to 10 megabytes if possible.

    resize.sh code
    file=$1
    target_size_mb=$2  # target size in MB
    target_size=$(( $target_size_mb * 1000 * 1000 * 8 )) # target size in bits
    length=`ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "$file"`
    length_round_up=$(( ${length%.*} + 1 ))
    total_bitrate=$(( $target_size / $length_round_up ))
    audio_bitrate=$(( 128 * 1000 )) # 128k bit rate
    video_bitrate=$(( $total_bitrate - $audio_bitrate ))
    ffmpeg -i "$file" -b:v $video_bitrate -maxrate:v $video_bitrate -bufsize:v $(( $target_size / 20 )) -b:a $audio_bitrate "${file}-${target_size_mb}mb.mp4"
    

    I’ll probably replace it eventually.


  • What does your ~/.bashrc look like? My last change was modifying a playlist command

    spoiler: I explain my last change to my ~/.bashrc file
    playlist https://www.youtube.com/@YouTube/videos
    

    or

    playlist /home/username/Videos
    

    or just from any directory with files

    playlist
    

    And then takes all the videos found at the url or at the path (including within folders), adds them to a playlist, shuffles them, and plays them from mpv.

    playlist() {
            param=""
    
            # If the first parameter has a length more than 1 character
            if [ ${#1} -gt 1 ]; then
                    param="${@}"
            else
                    param="."
            fi
    
            screen mpv $param --shuffle --ytdl-raw-options-add=cookies-from-browser=firefox --loop-playlist=inf --no-keepaspect-window --no-auto-window-resize
    }
    
    other functions and aliases in my ~/.bashrc
    alias code=codium
    alias files=nautilus
    alias explorer=nautilus
    alias rust="/path/to/.cargo/bin/evcxr"
    alias sniffnet="export ICED_BACKEND=tiny-skia; /path/to/.cargo/bin/sniffnet"
    alias http-server='/path/to/.cargo/bin/miniserve'
    alias iphone='uxplay'
    alias airplay='uxplay'
    alias watch='screen mpv --ytdl-raw-options-add=remote-components=ejs:github --ytdl-raw-options-add=cookies-from-browser=firefox --no-keepaspect-window '
    alias twitch='watch'
    alias timeshift-launcher="pkexec env WAYLAND_DISPLAY='$WAYLAND_DISPLAY' XDG_RUNTIME_DIR='$XDG_RUNTIME_DIR' /usr/bin/timeshift-launcher"
    alias update="sudo apt update && sudo apt upgrade -y && sudo flatpak update -y && sudo snap refresh"
    alias resize="path/to/resize/videos/resize.sh"
    
    playlist() {
            param=""
    
            # If the first parameter has a length more than 1 character
            if [ ${#1} -gt 1 ]; then
                    param="${@}"
            else
                    param="."
            fi
    
            screen mpv $param --shuffle --ytdl-raw-options-add=cookies-from-browser=firefox --loop-playlist=inf --no-keepaspect-window --no-auto-window-resize
    }
    
    gif() { ffmpeg -i $1 -f yuv4mpegpipe - | gifski -o $2 ${@:3} -;}
    



  • I just use autossh for it.

    I run an ssh connection to a VPS I pay like $5, which forwards a port there. The screen in the following command isn’t required, but I have it so I don’t have to keep the terminal window open.

    screen -d -m -S autossh.eastusa.keepalive autossh -M 33333 -R VPS_IP_HERE:5555:localhost:22 root@VPS_IP_HERE
    

    Then from other computers, to connect back

    ssh -L 5555:localhost:5555 root@VPS_IP_HERE
    ssh root@localhost -p 5555
    

    For remote computers connecting back, the first ssh connects to the VPS and forwards a port to the remote computer. Then the 2nd ssh connection uses the forwarded port to complete the ssh connection to the computer behind the IP that can’t port forward.


  • Since you posted in /c/rust@programming.dev, I’ll give an answer for Rust.

    When thinking about rendering, there are mostly 2 ways to complete it

    1. You handle setting pixels (usually rgba) at x and y coordinates
    2. You use a graphics toolkit that handles rendering commonly used drawing methods. Like rendering circles of a specific size, rendering a line between 2 points, etc.

    For 1, the crate pixels provides rendering to x and y coordinates with the CPU to window. If you’re doing lots of operations, you’ll probably find this too slow, and not fast enough. To solve this problem, people use a GPU instead with shaders. vulkano-rs is a good, wgpu is also good.

    For 2, I don’t have immediate recommendations, but you can usually find these types of toolkits with game engines. As an example, bevy has an example of rendering shapes.

    It also just depends where you want to render. If you’re limited to in the browser, you’ll find that maybe vulcano won’t work, and you’ll have to use something like WebGPU instead. Or maybe you’re restricted to an environment where a web browser can’t be used, so WebGPU can’t be used, and Vulkano has to be how you complete it. Maybe you can’t use a GPU, and need to render directly to a canvas on web page in the browser, then you can just use the MSDN docs for the canvas. etc.



  • We can imagine many scenarios, but the most plausible scenario is that she presented herself to him as entirely willing. Assuming she was being coerced by Epstein, he would have had every reason to tell her to conceal that from most of his associates.

    I’ve concluded from various examples of accusation inflation that it is absolutely wrong to use the term “sexual assault” in an accusation.