Skip to content

Instantly share code, notes, and snippets.

@jagt
jagt / export_camera_standalone.py
Last active March 30, 2024 03:38
Standalone script for exporting camera animation w/ custom attributes.
'''
export camera standalone
1. put in `C:/Users/<user>/Documents/maya/scripts`
2. open maya and select the camera in outliner
3. menu 'custom->Export Selected Camera'
'''
from maya import cmds
from maya import mel
def make_kwargs(overrides, **kwargs):
@jagt
jagt / cache.cc
Created June 17, 2013 15:47
c++ simple lru cache using map and double linked list
#include <cassert>
#include <iostream>
#include <map>
#include <string>
using namespace std;
template<class K, class V>
class cache
{
private:
# https://matklad.github.io/2020/04/13/simple-but-powerful-pratt-parsing.html
# it's amazing that rust version is actually shorter, wow
from collections import namedtuple
from enum import Enum
from io import StringIO
class PrattErr(RuntimeError):
def __init__(self, msg):
super().__init__(self, msg)
@jagt
jagt / asUTCTimestamp.js
Last active March 1, 2023 13:13
Naive datetime timestamp(local time treated as UTC) in Python and Javascript
// convert a date to timestamp as if it is a UTC date
// in other words used to remove local timezone info and fake everything as UTC
// must beware the funky api naming
// workaround js UTC date things
// the general rule is treat date as naive datetime with no timezone info
// using UTC timezone is better since it won't change based on user's computer location
function asUTCTimestamp(date) {
return Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(),
date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());
@jagt
jagt / cool-tree.handcode.h
Created December 16, 2013 16:55
cool language semantic check implementation.
//
// The following include files must come first.
#ifndef COOL_TREE_HANDCODE_H
#define COOL_TREE_HANDCODE_H
#include <iostream>
#include "tree.h"
#include "cool.h"
#include "stringtab.h"
@jagt
jagt / RoslynCodeGen.cs
Created December 15, 2017 15:16
Sample roslyn code generation
using System;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.Editing;
// ref https://msdn.microsoft.com/en-us/magazine/mt707527.aspx
// needed packages
// Microsoft.CSharp;
// Microsoft.CodeAnalysis;
// Microsoft.CodeAnalysis.CSharp;
// Microsoft.CodeAnalysis.CSharp.Workspaces;
=================================================================
==6756==ERROR: AddressSanitizer: new-delete-type-mismatch on 0x11b647ca0820 in thread T0:
object passed to delete has wrong type:
size of the allocated type: 24 bytes;
size of the deallocated type: 8 bytes.
#0 0x7ff6990d82aa in operator delete(void *, unsigned __int64) D:\agent\_work\13\s\src\vctools\crt\asan\llvm\compiler-rt\lib\asan\asan_new_delete.cpp:172
#1 0x7ff6990dd4a0 in ply::OutPipe::`scalar deleting dtor'(unsigned int) C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30037\include\xthreads.h:129
#2 0x7ff6990d9404 in ply::OutStream::destructInternal(void) C:\Dev\plywood\repos\plywood\src\runtime\ply-runtime\io\OutStream.cpp:50
#3 0x7ff6990914dd in ply::OutStream::~OutStream(void) C:\Dev\plywood\repos\plywood\src\runtime\ply-runtime\io\OutStream.h:118
#4 0x7ff6990912da in main C:\Dev\plywood\repos\plylox\PipeLeak\Main.cpp:8
@jagt
jagt / ipython_maya_2018.md
Created June 19, 2018 08:55
Setting up IPython for Maya 2018
  1. Put mayapy on Path
  2. Open a cmd as admin
  3. run mayapy -m ensurepip --default-pip
  4. run mayapy -m pip install --upgrade pip
  5. run mayapy -m pip install ipython==5.7.0
  6. delete C:\Program Files\Autodesk\Maya2018\Python\Lib\site-packages\_scandir.pyd. it's build against original python release version.
  7. test mayapy -c "from IPython import embed; embed()"
@jagt
jagt / AltDumpSnapshot.cs
Last active January 11, 2021 11:39
Dump Unity 5.3x memory profiler snapshot directly to file so it wont freeze the window and can be diffed on.
using UnityEditor;
using UnityEditor.MemoryProfiler;
using System;
using System.IO;
using System.Collections.Generic;
// Standalone menu item to dump memory to a text format that's
// more easier to diff on.
namespace MemoryProfilerWindow